React NativeSDK 故障排除
找不到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 中,替换 imports:
早于:
#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.xcodeprojAppCenterReactNativeAnalytics.xcodeprojAppCenterReactNativeCrashes.xcodeproj
- 打开项目设置 ,在" 链接的框架和库"部分中的"常规"选项卡下,删除引用上一步中删除的目标库的新项:
libAppCenterReactNative.alibAppCenterReactNativeAnalytics.alibAppCenterReactNativeCrashes.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无法识别链接命令
如果已安装 yarn 在计算机上安装 ,则 react-native init {myapp} 将初始化应用,然后使用 而不是 yarn 安装依赖项 npm 。 如果在运行 时看到以下错误消息,则App Center安装依赖项而不是 ,以便 和 在安装 react-native link 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 及以上
可能的原因是 Apple SDK中的中断性变更导致主要包版本之间发生冲突。
确保所有包
appcenter都使用相同的主版本。 如果需要,请npm install用 或yarn更新它们。转到 项目的 ios 文件夹并删除 Podfile.lock 和 Pods 文件夹。
在
pod install --repo-updateios 文件夹中 运行 。验证 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 链接期间找不到 AppCenterReactNativeShared 的规范
如果在 期间看到以下 CocoaPods 错误消息,则计算机上可能 (CocoaPods 规范存储库的) 本地克隆文件 react-native link ~/.cocoapods/repos 不是最新的。
Analyzing dependencies [!] Unable to find a specification for AppCenterReactNativeShared (~> {version})
运行 pod repo update 以更新规范存储库,然后 react-native link 重试。 有关 CocoaPods 命令详细信息,请参阅 CocoaPods 命令行参考。
如何使用 App Center 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,App Center 行上替换所有依赖项:
use_native_modules!运行以下命令:
pod repo update
如何将 React Native SDK 更新到最新版本
如果已将 SDK 集成到应用程序中,并且想要升级到较新版本的 SDK,请按照以下步骤进行升级:
npm uninstall --save appcenter appcenter-analytics appcenter-crashes卸载旧的 App Center 包。npm install --save-exact appcenter appcenter-analytics appcenter-crashes安装最新的 App Center 包。pod repo update以确保 CocoaPods 规范存储库是最新的。react-native link.
提示
如果在 期间看到类似于以下 CocoaPods 错误消息的错误消息,请删除 ios 文件夹中自动生成的 react-native link Podfile.lock, 然后 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 存储库。 若要App Center,需要将 添加到 mavenCentral() Gradle 文件的存储库,如下所示:
repositories {
google()
mavenCentral()
}
保护App Center机密值
是应用的标识符,需要知道流量应用到的应用,并且不能用于检索 app_secret 或编辑现有数据。 如果公开,则最大的风险是向应用发送错误数据,但这不会影响 app_secret 数据的安全性。
若要检索任何敏感数据,需要提供在客户端生成的应用/用户令牌 。 无法使客户端上的数据完全安全。
可以通过使用环境变量将应用机密注入代码来提高应用的安全性。 这样,机密在代码中不可见。