Устранение неполадок пакета SDK для React Native
Важно!
Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio, пока он не будет полностью выведен из эксплуатации, существует несколько рекомендуемых вариантов, на которые вы можете рассмотреть возможность миграции.
Узнайте больше о сроках поддержки и альтернативных вариантах.
Файл React/RCTDefines.h не найден
Эта ошибка возникает, если на библиотеки ядра RN неправильно ссылаются, что может быть вызвано различными типами проблем интеграции или связывания. Это часто происходит, когда зависимости связаны с использованием относительного пути в podfile, а не статически в проекте.
Наш скрипт связывания поддерживает только стандартный способ связывания модулей pod, поэтому для решения проблемы:
Замените зависимости в на
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'
Запустите
pod install
изiOS
папки.В AppDelegate.m замените import:
Перед следующей операцией.
#import <AppCenterReactNative/AppCenterReactNative.h> #import <AppCenterReactNativeAnalytics/AppCenterReactNativeAnalytics.h> #import <AppCenterReactNativeCrashes/AppCenterReactNativeCrashes.h>
После следующих операций.
#import "AppCenterReactNative.h" #import "AppCenterReactNativeAnalytics.h" #import "AppCenterReactNativeCrashes.h"
Удалите зависимости 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
- Выберите <YOUR_APP> ->Библиотеки и удалите следующие файлы:
команда React Native link unrecognized
Если вы установили yarn
на компьютере, react-native init {myapp}
инициализирует приложение и устанавливает зависимости с помощью yarn
, а не npm
. Если при запуске react-native link
отображается следующее сообщение об ошибке , скорее всего, зависимости Центра приложений yarn add {package}
устанавливаются из npm install {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.
Убедитесь, что все
appcenter
пакеты используют одну и ту же основную версию. При необходимости обновите их с помощьюnpm install
илиyarn
.Перейдите в папку ios проекта и удалите Podfile.lock и папку Pods .
Запустите
pod install --repo-update
в папке ios .Убедитесь, что 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 не удается найти спецификацию для AppCenterReactNativeShared во время react-native link
Если вы видите следующее сообщение об ошибке 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
Откройте podfile и замените зависимости Центра приложений в следующей строке:
use_native_modules!
Выполните следующую команду:
pod repo update
Обновление пакета SDK для React Native до последней версии
Если вы уже интегрировали наш пакет SDK в приложение и хотите выполнить обновление до более новой версии пакета SDK, выполните следующие действия для обновления:
npm uninstall --save appcenter appcenter-analytics appcenter-crashes
для удаления старых пакетов Центра приложений.npm install --save-exact appcenter appcenter-analytics appcenter-crashes
для установки последних пакетов Центра приложений.pod repo update
чтобы убедиться, что ваш репозиторий спецификации CocoaPods обновлен.react-native link
.
Совет
Если во время react-native link
отображается сообщение об ошибке, аналогичное приведенному ниже сообщению об ошибке CocoaPods, удалите автоматически созданный 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
подвергаетесь риску, самый большой риск заключается в отправке плохих данных в приложение, но это не повлияет на безопасность данных.
Чтобы получить конфиденциальные данные, необходимо предоставить маркер приложения или пользователя, который создается на стороне клиента. Невозможно сделать данные на стороне клиента полностью безопасными.
Вы можете повысить безопасность приложения, используя переменную среды для внедрения секрета приложения в код. Таким образом, секрет не будет виден в коде.