Поделиться через


Устранение неполадок с пакетом SDK Для React Native

Это важно

Центр приложений Visual Studio был прекращен 31 марта 2025 г., за исключением функций аналитики и диагностики, которые будут поддерживаться до 30 июня 2026 г. Подробнее.

Файл React/RCTDefines.h не найден

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

Наш скрипт связывания поддерживает только стандартный способ связывания модулей, поэтому для устранения проблемы:

  1. Замените зависимости в вашем Podfile на относительные пути привязки.

    До:

    pod 'AppCenter/Analytics', '~> 1.14.0'
    pod 'AppCenter/Crashes', '~> 1.14.0'
    pod 'AppCenterReactNativeShared', '~> 1.13.0'
    

    После:

    pod 'appcenter', path: '../node_modules/appcenter/ios'
    pod 'appcenter-analytics', path: '../node_modules/appcenter-analytics/ios'
    pod 'appcenter-crashes', path: '../node_modules/appcenter-crashes/ios'
    
  2. Запустите pod install из iOS папки.

  3. В AppDelegate.m замените импорт:

    До:

    #import <AppCenterReactNative/AppCenterReactNative.h>
    #import <AppCenterReactNativeAnalytics/AppCenterReactNativeAnalytics.h>
    #import <AppCenterReactNativeCrashes/AppCenterReactNativeCrashes.h>
    

    После:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Удалите зависимости AppCenter из проекта (щелкните правой кнопкой мыши зависимость > "Удалить зависимость").

    • Выберите <YOUR_APP> ->Библиотеки и удалите следующие файлы:
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Откройте параметры проекта и на вкладке "Общие " в разделе "Связанные платформы и библиотеки " удалите новые элементы, ссылающиеся на целевые библиотеки, удаленные на предыдущем шаге:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Измените пути поиска хедеров, чтобы удалить хедеры из проектов плагинов AppCenter React Native. Откройте параметры проекта и на вкладке "Параметры сборки " в разделе "Пути поиска заголовков " удалите следующие расположения для файлов заголовков:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Если у вас установлено yarn на компьютере, то react-native init {myapp} инициализирует приложение и установит зависимости, используя yarn вместо npm. Если при запуске react-native link отображается следующее сообщение об ошибке, скорее всего, зависимости App Center устанавливаются из npm install {package} вместо yarn add {package}, из-за чего npm и yarn перемешиваются во время установки.

Command `link` unrecognized. Make sure that you have run `npm install` and that you are inside a react-native project.

В этом случае запустите npm install и повторите попытку react-native link .

Ошибка сборки: файл 'AppCenterCrashes/MSACErrorReport.h' не найден

React-Native 0.60 и выше

Вероятно, это конфликт между основными версиями пакетов из-за критического изменения в нашем пакете SDK Для Apple.

  1. Убедитесь, что все appcenter пакеты используют одну и ту же основную версию. Обновите их с помощью npm install или yarn при необходимости.

  2. Перейдите в папку ios проекта и удалите podfile.lock и папку Pods .

  3. Запустите pod install --repo-update в папке ios .

  4. Убедитесь, что Podfile.lock содержит appcenter зависимости одной основной версии.

React Native ниже 0,60

Одна из возможных причин заключается в выполнении react-native link без установки CocoaPods .

Чтобы подтвердить причину, выполните react-native linkи в журналах, проверьте следующую строку:

Could not configure AppCenter for iOS. Error Reason - spawn pod ENOENT

Эта строка находится в следующем разделе журналов:

Added code to initialize iOS AppCenter SDK in ios/TestApp/AppDelegate.m
Installing Cocoapods dependencies...
Could not configure AppCenter for iOS. Error Reason - spawn pod ENOENT
rnpm-install info Platform 'ios' module appcenter-analytics is already linked
rnpm-install info Platform 'android' module appcenter-analytics is already linked

Если вы видите эту ошибку, убедитесь, что pod команда из CocoaPods доступна в переменной среды PATH системы.

После исправления установки CocoaPods выполните pod install в папке iOS, чтобы исправить проект.

Если вы видите следующее сообщение об ошибке CocoaPods во время react-native link, вероятность того, что ваш локальный клон (~/.cocoapods/repos на вашем компьютере) репозитория спецификации CocoaPods не обновлен.

Analyzing dependencies [!] Unable to find a specification for AppCenterReactNativeShared (~> {version})

Запустите pod repo update , чтобы обновить репозиторий спецификаций и повторите попытку react-native link . Дополнительные сведения о командах CocoaPods см. в справочнике по командной строке CocoaPods.

Обновление приложения с помощью пакета SDK Центра приложений с React Native 0.59 до версии 0.60

Чтобы обновить React Native до версии 0.60.0, используйте следующую команду:

react-native upgrade 0.60.0

Замечание

Если во время обновления вы получите эту ошибку Command failed: git status -s fatal: not a git repository (or any of the parent directories): .git, выполните следующие действия:

git init
git add .
git commit -m "Upgrade react-native"

После завершения обновления вы можете удалить .git каталог.

Обновление React Native iOS

  1. Откройте Podfile и замените зависимости Центра приложений на следующей строке:

    use_native_modules!
    
  2. Выполните следующую команду:

    pod repo update
    

Обновление пакета SDK React Native до последней версии

Если вы уже интегрировали наш пакет SDK в приложение и хотите обновить до более новой версии пакета SDK, выполните следующие действия, чтобы обновить:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes для удаления старых пакетов Центра приложений.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes для установки последних пакетов Центра приложений.

  3. pod repo update чтобы убедиться, что ваш репозиторий спецификации CocoaPods обновлен.

  4. react-native link.

Подсказка

Если вы видите сообщение об ошибке, аналогичное следующему сообщению об ошибке CocoaPods во время react-native link, удалите автоматически созданный podfile.lock в папке ios и снова запустите его react-native link .

[!] Unable to satisfy the following requirements:

- `AppCenter/Core (= 1.0.0)` required by `Podfile.lock`
- `AppCenter/Core (= 1.0.0)` required by `AppCenter/Crashes (1.0.0)`
- `AppCenter/Core (= 1.0.0)` required by `AppCenter/Analytics (1.0.0)`
- `AppCenter/Core (= 1.0.1)` required by `AppCenterReactNativeShared (1.0.1)`

Миграция из jCenter в Maven Central

Из-за прекращения поддержки jCenter все сборки были перенесены в репозиторий Maven Central. Чтобы использовать Центр приложений, необходимо добавить mavenCentral() в репозиторий в файле Gradle, как показано ниже:

repositories {
   google()
   mavenCentral()
}

Защита секретного значения Центра приложений

Это app_secret идентификатор вашего приложения, необходимо знать, к какому приложению применяется трафик, и его нельзя использовать для извлечения или изменения существующих данных. Если ваш app_secret становится доступным, наибольшая опасность заключается в отправке недостоверных данных в приложение; однако это не повлияет на безопасность данных.

Чтобы получить конфиденциальные данные, необходимо предоставить маркер приложения или пользователя, который создается на стороне клиента. Нет способа сделать данные на стороне клиента полностью безопасными.

Вы можете улучшить безопасность приложения с помощью переменной среды для внедрения секрета приложения в код. Таким образом, секрет не отображается в коде.