React Native客户端 SDK 调试和故障排除

方法包括许多开箱即用诊断日志记录,因此,如果在使用它时发现问题,最好先检查应用的输出 sync 日志。 这可指示是否已正确配置应用 (插件是否可以找到部署密钥?) 、如果应用能够访问服务器、是否发现可用更新、是否成功下载/安装更新,等等。我们希望继续改进日志记录,尽可能直观/全面,因此,如果发现日志记录令人困惑或缺少任何内容,请告知我们。

此外,还可使用任何特定于平台的工具查看 CodePush 日志。 启动开发人员控制台并查找前缀为 的消息 [CodePush]

默认情况下,React Native版本中的 iOS 上禁用了日志,因此,如果要在发布版本中查看这些日志,则需要对 AppDelegate.m 文件进行以下更改:

  1. 添加 #import <React/RCTLog.h> 语句。 对于 RN < v0.40,请使用: #import "RCTLog.h"

  2. 将以下语句添加到 方法的顶部, application:didFinishLaunchingWithOptions 以查看发布模式下的 CodePush 日志:

    RCTSetLogThreshold(RCTLogLevelInfo);
    

如果检查日志时没有提供问题的指示,请参阅以下常见问题,以进一步提出解决方法:

问题/症状 可能的解决方法
编译错误 仔细检查你的 React Native 版本是否与 使用的 CodePush 版本兼容。
在 iOS 模拟器中调用 sync 或 时 checkForUpdate 的网络超时/挂起 尝试通过选择菜单项来重置 Simulator -> Reset Content and Settings.. 模拟器,然后重新运行应用。
服务器在调用 或 404 时使用 sync 进行响应 checkForUpdate 仔细检查添加到 Info.plist (iOS) build.gradle (Android) 的部署密钥是否实际 sync / checkForUpdate 正确。 您可以运行 appcenter codepush deployment list <ownerName>/<appName> --displayKeys 来查看应用程序部署的正确密钥。
未发现更新 仔细检查正在运行的应用程序的版本 (如 1.0.0) 是否与发布更新 CodePush 时指定的版本相匹配。 此外,请确保将你的应用程序配置为与你的应用程序进行同步。
重新启动后未显示更新 如果不是 sync 在应用启动时调用 (如 componentDidMount 根组件) 中所示,则需要 notifyApplicationReady 在应用启动时显式调用,否则插件会将更新失败并回滚。
我已经发布了适用于 iOS 的更新,但我的 Android 应用程序还显示了更新并将其中断 请确保每个平台都有不同的部署密钥,以便正确接收更新
安装 CodePush 更新后图像消失 如果你的应用正在使用 "响应本机资产" 系统加载图像 (这是 require(./foo.png)) 语法,则 必须 将你的资产和 JS 捆绑包发布到 CodePush。
针对 iOS 模拟器运行你的应用时,找不到任何 JS 捆绑包 默认情况下,对本机的响应在针对模拟器运行时不会生成你的 JS 捆绑包。 如果使用 [CodePush bundleURL] 的是,并以 iOS 模拟器为目标,则可能会得到 nil 结果。 此问题将在 RN 0.22.0 中修复,但仅适用于发布版本。 你现在可以通过在本地进行 更改 来取消阻止此方案。