【问题标题】:Versioning of Android React Native Apps with expo-updates使用 expo-updates 对 Android React Native 应用程序进行版本控制
【发布时间】:2022-08-21 06:20:31
【问题描述】:

我试图弄清楚如何在我的 React Native 应用程序(适用于 Android)中为 OTA 更新配置 expo-updates。如果我理解正确,我需要一种对版本进行版本控制的方法,以便正确的更新进入人们可能已安装在其设备上的应用程序的正确版本。这可以通过两种方式实现(请注意,我使用expo-cli 来管理我的工作流程):

  1. 通过runtimeVersion,在AndroidManifest.xml 文件中的expo.modules.updates.EXPO_RUNTIME_VERSION 中设置:

    ...
    <meta-data android:name=\"expo.modules.updates.EXPO_RUNTIME_VERSION\" android:value=\"1.001\"/>
    ...
    

    在这种情况下,我必须增加运行时版本每次我进行涉及安装新软件包或任何其他与JavaScript的应用程序。

  2. 通过sdkVersion,在expo.modules.updates.EXPO_SDK_VERSION 中设置AndroidManifest.xml 文件:

    ...
    <meta-data android:name=\"expo.modules.updates.EXPO_SDK_VERSION\" android:value=\"44.0.0\"/>
    ...
    

    在这种情况下,我还必须增加开发工具包版本每次我像之前描述的那样做一个大的改变。

    因此,这是我理解可以管理这些版本(一种或另一种)的两种可能方式。但是,我对参数sdkVersionruntimeVersion 也存在于文件app.json 中这一事实感到困惑。

    ...
      \"name\": \"MyApp\",
      \"expo\": {
        \"name\": \"MyApp\",
        \"slug\": \"myapp\",
        \"version\": \"1.0.0\",
        \"runtimeVersion\": \"1.001\",
        \"icon\": \"./assets/icon.png\",
    ...
    

    或者

    ...
      \"name\": \"MyApp\",
      \"expo\": {
        \"name\": \"MyApp\",
        \"slug\": \"myapp\",
        \"version\": \"1.0.0\",
        \"sdkVersion\": \"44.0.0\",
        \"icon\": \"./assets/icon.png\",
    ...
    

    这是定义这些参数的另一种方式吗?这肯定比挖掘AndroidMainfest.xml 容易得多。此外,app.jsonpackages.json 中还有其他与版本相关的参数,例如version。这些与同一件事有关,还是完全不同?

    最后,在这两种情况下,版本号格式的一般约定是什么?

    标签: react-native expo versioning automatic-updates expo-updates


    【解决方案1】:

    所以,我最终这样做的方式如下:

    • project_root/android/app/src/main/AndroidManifest.xml:

      ...
          <meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://exp.host/@username/ProjectName"/>
          <meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/>
          <meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="44.0.0"/>
          <meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
          <meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
      ... 
      
    • package.json:

      {
          "name": "project_name",
          "version": "1.0.0",
          ...
      }
      
    • app.json:

      {
          "name": "Project Name",
          "displayName": "Project Display Name",
          "expo": {
             "name": "Project Name",
             "slug": "ProjectName",
             "version": "1.0.0",
             ...
          }
      }
      

    增加版本号时根本不需要触摸AndroidManifest.xml 文件。您只需更改package.jsonapp.json 中的version 值。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多