Вопрос или проблема
Я создал новый React Native Project—Cli и установил эти npm пакеты: npm install @react-navigation/native
, npm install @react-navigation/stack
и npm install @react-navigation/elements
. Мой проект работает отлично, но когда я устанавливаю npm install react-native-gesture-handler
и запускаю мой проект с помощью npx react-native run-android.
Появилась ошибка, и я пробовал, но ошибка не была устранена.
Задача :app:configureCMakeDebug[arm64-v8a] НЕУДАЧА
Задача :react-native-gesture-handler:compileDebugKotlin НЕУДАЧА
Задача :app:configureCMakeDebug[arm64-v8a]
C/C++: Ошибка CMake в C:/Users/haide/Desktop/RN Test/AwesomeProject/android/app/build/generated/autolinking/src/main/jni/Android-autolinking.cmake:9 (add_subdirectory):
C/C++: add_subdirectory вызван с неправильным количеством аргументов
C/C++: Стек вызовов (последний вызов первым):
C/C++: C:/Users/haide/Desktop/RN Test/AwesomeProject/node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake:86 (include)
C/C++: CMakeLists.txt:31 (include)
C/C++: Ошибка CMake в C:/Users/haide/Desktop/RN Test/AwesomeProject/node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake:89 (target_link_libraries):
C/C++: Невозможно указать библиотеки связи для цели
C/C++: "react_codegen_rngesturehandler_codegen", которая не собирается этим
C/C++: проектом.
C/C++: Стек вызовов (последний вызов первым):
C/C++: CMakeLists.txt:31 (include)
> Задача :app:configureCMakeDebug[arm64-v8a] НЕУДАЧА
> Задача :react-native-gesture-handler:compileDebugKotlin НЕУДАЧА
Зависимости и версия моего проекта.
"dependencies": {
"@react-navigation/elements": "^2.0.0",
"@react-navigation/native": "^7.0.0",
"@react-navigation/stack": "^7.0.0",
"react": "18.3.1",
"react-native": "0.76.1",
"react-native-gesture-handler": "^2.16.0"
},
Ответ или решение
Решение проблемы с интеграцией зависимостей навигации в React Native
Введение в проблему
Вы столкнулись с ошибкой при установке зависимости react-native-gesture-handler
в вашем проекте React Native, который использует библиотеку навигации. Судя по приведенной информации об ошибках, проблема динамически возникает в процессе сборки проекта. Это может быть связано с несколькими причинами, включая несовместимость версий зависимостей, проблемы с конфигурацией сборки или отсутствием необходимых настроек. В этом ответе мы проанализируем возможные источники ошибок и предложим решения.
Описание ошибки
Ошибка, которую вы получили:
Task :app:configureCMakeDebug[arm64-v8a] FAILED
Task :react-native-gesture-handler:compileDebugKotlin FAILED
...
CMake Error at C:/Users/haide/Desktop/RN Test/AwesomeProject/android/app/build/generated/autolinking/src/main/jni/Android-autolinking.cmake:9 (add_subdirectory):
add_subdirectory called with incorrect number of arguments
Указывает на проблемы на этапе интеграции CMake, что вероятно связано с неправильной конфигурацией проекта или зависимостей.
Проведение диагностики
-
Совместимость версий: Первым шагом стоит проверить совместимость всех используемых библиотек с вашей версией React Native. В вашем случае версии следующие:
react
:18.3.1
react-native
:0.76.1
@react-navigation/native
:7.0.0
@react-navigation/stack
:7.0.0
react-native-gesture-handler
:^2.16.0
Проверьте документацию к каждой библиотеке для подтверждения, что они совместимы с React Native
0.76.1
. -
Обновление зависимостей: Убедитесь, что все используемые библиотеки обновлены до последних стабильных версий. Вы можете использовать команды:
npm outdated
-
Настройка проекта для поддержки CMake: Некоторые зависимости, такие как
react-native-gesture-handler
, требуют дополнительной конфигурации для корректной работы в Android. Убедитесь, что вы включили соответствующие плагины в вашемandroid/app/build.gradle
. Например:// Нужные плагины apply plugin: 'com.android.application' apply plugin: 'kotlin-android' ... dependencies { implementation project(':react-native-gesture-handler') ... }
Устранение ошибок CMake
Для устранения ошибок CMake выполните следующие действия:
-
Настройка Gradle:
Убедитесь, что у вас настроены пути и версии дляCMake
. Добавьте следующие строки вandroid/build.gradle
:buildscript { ext { buildToolsVersion = "30.0.3" ... } }
-
Очистка проекта:
Запустите команду для очистки сборки:cd android ./gradlew clean
-
Запуск сборки:
После очистки попробуйте заново собрать проект:cd .. npx react-native run-android
Заключение и советы
После выполнения вышеперечисленных шагов, вероятно, ошибка будет устранена. Важно всегда проверять совместимость версий используемых библиотек и думать о спецификациях вашего проекта. Если проблема сохранится, вы можете обратиться к документации React Native и сообществам разработчиков.
Также рекомендуется использовать инструменты для мониторинга зависимостей, такие как npm-check-updates
, для автоматизации процесса проверки и обновления зависимостей.
В случае появления новых ошибок или затруднений, можно протестировать проект на другой версии React Native или запускать его на другом эмуляторе, чтобы изолировать неисправные компоненты.