Ошибка интеграции зависимостей навигации в React Native

Вопрос или проблема

Я создал новый 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, что вероятно связано с неправильной конфигурацией проекта или зависимостей.

Проведение диагностики

  1. Совместимость версий: Первым шагом стоит проверить совместимость всех используемых библиотек с вашей версией 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.

  2. Обновление зависимостей: Убедитесь, что все используемые библиотеки обновлены до последних стабильных версий. Вы можете использовать команды:

    npm outdated
  3. Настройка проекта для поддержки 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 выполните следующие действия:

  1. Настройка Gradle:
    Убедитесь, что у вас настроены пути и версии для CMake. Добавьте следующие строки в android/build.gradle:

    buildscript {
       ext {
           buildToolsVersion = "30.0.3"
           ...
       }
    }
  2. Очистка проекта:
    Запустите команду для очистки сборки:

    cd android
    ./gradlew clean
  3. Запуск сборки:
    После очистки попробуйте заново собрать проект:

    cd ..
    npx react-native run-android

Заключение и советы

После выполнения вышеперечисленных шагов, вероятно, ошибка будет устранена. Важно всегда проверять совместимость версий используемых библиотек и думать о спецификациях вашего проекта. Если проблема сохранится, вы можете обратиться к документации React Native и сообществам разработчиков.

Также рекомендуется использовать инструменты для мониторинга зависимостей, такие как npm-check-updates, для автоматизации процесса проверки и обновления зависимостей.

В случае появления новых ошибок или затруднений, можно протестировать проект на другой версии React Native или запускать его на другом эмуляторе, чтобы изолировать неисправные компоненты.

Оцените материал
Добавить комментарий

Капча загружается...