在现有的 React Native 项目中安装 expo-updates
编辑
学习如何在现有的 React Native 项目中安装和配置 expo-updates。
expo-updates 是一个库,可以让您的应用管理应用代码的远程更新。它与配置的远程更新服务通信,以获取可用更新的信息。本指南解释了如何设置一个裸 React Native 项目,以便与 EAS Update 一起使用,这是一个托管的远程更新服务,包含简化安装和配置 expo-updates 库的工具。
您在项目中使用持续原生生成(CNG)吗?
您可能阅读了错误的指南。要在使用 CNG 的项目中使用 expo-updates,请参见 EAS Update "开始使用"。
先决条件
必须安装并配置 expo 包。 如果您通过 npx @react-native-community/cli@latest init 创建了项目,并且没有安装其他任何 Expo 库,则在继续之前需要 安装 Expo 模块。
安装
要开始,请安装 expo-updates:
- npx expo install expo-updates然后,为 iOS 安装 pods:
- npx pod-install配置 expo-updates 库
应用以下部分的差异中的更改,以在您的项目中配置 expo-updates。
JavaScript 和 JSON
运行 eas update:configure 以设置 app.json 中的 updates URL 和 projectId。
- eas update:configure修改 app.json 的 expo 部分。 如果您使用 npx @react-native-community/cli@latest init 创建了项目,则需要添加以下更改,包括 updates URL。
下面示例中的
updatesURL 和projectId是与 EAS Update 一起使用的。当运行eas update:configure时,EAS CLI 会正确设置此 URL 以用于 EAS Update 服务。
如果您想要设置一个 自定义 expo-updates 服务器,请将您的 URL 添加到 app.json 中的 updates.url。
{ "name": "MyApp", "displayName": "MyApp", "expo": { "name": "MyApp", ... "updates": { - "url": "https://u.expo.dev/[your-project-id]" + "url": "http://localhost:3000/api/manifest" } } }
Android
修改 android/app/build.gradle 以检查 Expo 文件中的 JS 引擎配置(JSC 或 Hermes):
修改 android/app/src/main/AndroidManifest.xml 以添加 expo-updates 配置 XML,以便与 app.json 的内容匹配:
如果使用更新服务器 URL(运行在同一台机器上的自定义非 HTTPS 更新服务器),您需要修改 android/app/src/main/AndroidManifest.xml 以添加更新服务器 URL 并启用 usesCleartextTraffic:
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme" + android:usesCleartextTraffic="true" > - <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://u.expo.dev/[your-project-id]"/> + <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="http://localhost:3000/api/manifest"/> </application>
将 Expo 运行时版本字符串密钥添加到 android/app/src/main/res/values/strings.xml:
iOS
将文件 Podfile.properties.json 添加到 ios 目录:
{ "expo.jsEngine": "hermes" }
修改 ios/Podfile 以检查 Expo 文件中的 JS 引擎配置(JSC 或 Hermes):
使用 Xcode,将 Expo.plist 文件添加到 ios/your-project/Supporting,内容如下,以匹配 app.json 的内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EXUpdatesCheckOnLaunch</key> <string>ALWAYS</string> <key>EXUpdatesEnabled</key> <true/> <key>EXUpdatesLaunchWaitMs</key> <integer>0</integer> <key>EXUpdatesRuntimeVersion</key> <string>1.0.0</string> <key>EXUpdatesURL</key> <string>http://localhost:3000/api/manifest</string> </dict> </plist>
下一步
- 要开始使用 EAS Update 和 EAS Build,请参见 EAS Update 开始使用。
- 请参见
expo-updatesAPI 参考 以获取有关如何使用该库的更多信息。 - 请参见如何直接使用 EAS Update 和本地构建。
- 也可以使用实现 Expo 更新协议 的自定义服务器来使用
expo-updates。请参见custom-expo-updates-serverREADME。