React Native客户端 SDK 调试和故障排除
方法包括许多开箱即用诊断日志记录,因此,如果在使用它时发现问题,最好先检查应用的输出 sync 日志。 这可指示是否已正确配置应用 (插件是否可以找到部署密钥?) 、如果应用能够访问服务器、是否发现可用更新、是否成功下载/安装更新,等等。我们希望继续改进日志记录,尽可能直观/全面,因此,如果发现日志记录令人困惑或缺少任何内容,请告知我们。
此外,还可使用任何特定于平台的工具查看 CodePush 日志。 启动开发人员控制台并查找前缀为 的消息 [CodePush] 。
默认情况下,React Native版本中的 iOS 上禁用了日志,因此,如果要在发布版本中查看这些日志,则需要对 AppDelegate.m 文件进行以下更改:
添加
#import <React/RCTLog.h>语句。 对于 RN < v0.40,请使用:#import "RCTLog.h"将以下语句添加到 方法的顶部,
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 中修复,但仅适用于发布版本。 你现在可以通过在本地进行 更改 来取消阻止此方案。 |