React Native SDK 故障排除
重要
Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。
找不到“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'
从
iOS
文件夹运行pod install
。在 AppDelegate.m 中,替换导入:
早于:
#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 命令
如果已在yarn
计算机上安装,react-native init {myapp}
将使用 而不是 npm
初始化应用并安装依赖项yarn
。 如果在运行 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
。
生成错误,例如“找不到 AppCenter 崩溃/MSACErrorReport.h”文件
React-Native 0.60 及更高版本
可能的原因是由于 Apple SDK 中的中断性变更,导致主要包版本之间存在冲突。
确保所有
appcenter
包使用相同的主版本。 根据需要使用npm install
或yarn
更新它们。转到项目的 ios 文件夹并删除 Podfile.lock 和 Pods 文件夹。
在 ios 文件夹中运行
pod install --repo-update
。验证 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 安装后,在 ios 文件夹中运行 pod install
以修复项目。
CocoaPods 在 react-native 链接期间找不到 AppCenterReactNativeShared 的规范
如果在 期间 react-native link
看到以下 CocoaPods 错误消息,则可能是计算机上的本地克隆 (~/.cocoapods/repos
,) CocoaPods 规范存储库 不是最新的。
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
。
更新 iOS React Native
打开 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
.
提示
如果在 期间react-native link
看到类似于以下 CocoaPods 错误消息的错误消息,请删除 ios 文件夹中自动生成的 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
如果暴露,最大的风险是向应用发送错误数据,但不会影响数据的安全性。
若要检索任何敏感数据,需要提供应用/用户令牌,该 令牌在客户端生成。 无法使客户端上的数据完全安全。
可以通过使用环境变量将应用机密注入代码来提高应用的安全性。 这样,密码在代码中就不可见了。