【问题标题】:React Native release apk doesn't match app when running react-native run-android运行 react-native run-android 时,React Native 发布 apk 与应用程序不匹配
【发布时间】:2018-11-14 05:00:44
【问题描述】:

我目前正在构建我的第一个 React Native 应用程序。我在 Play Console 中为内部测试设置了一个版本,并且能够推送我的第一个签名 apk。从那时起,我们进行了错误修复,现在已合并到 master 中。当我尝试通过运行生成新版本时:

cd android && ./gradlew assembleRelease

并作为新版本上传,通过 Play 商店更新我的应用后,我看不到任何新变化。

我试过跑步

react-native bundle --entry-file ./index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

在生成新版本之前,但我仍然看不到更改。

在我的设备与 USB 调试连接时运行 react-native run-android 工作正常,在任何模拟器中也一样。我就是想不通为什么我的 APK 与本地设备上生成的代码不匹配。

我是否遗漏了一个步骤,使我的 APK 在构建时无法代表 master 上的最新更改?

使用 React Native 0.56

已更新以添加我的 Gradle 配置:

 // android/app/build.grade
 signingConfigs {
    release {
        if(project.hasProperty('MY_RELEASE_STORE_FILE')) {
            storeFile file(MY_RELEASE_STORE_FILE)
            storePassword pass
            keyAlias MY_RELEASE_KEY_ALIAS
            keyPassword pass
        }
    }
}

【问题讨论】:

    标签: android react-native apk


    【解决方案1】:

    尝试改变

    --entry-file ./index.js
    

    --entry-file ./index.android.js
    

    【讨论】:

    • 据我了解,在 React Native 的早期版本中使用了 index.android.js。我目前使用的是 0.56,我的入口文件是 index.js
    【解决方案2】:

    也许为时已晚,但我希望这可以拯救某人: 每次添加新模块或资产时,您似乎都必须重新捆绑它

    react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/应用程序/src/main/res

    【讨论】:

      【解决方案3】:

      你应该更新 app 文件夹下的 android\app\build.gradle 文件,将此代码放在 defaultConfig 下

      signingConfigs {
          debug {
              storeFile file('debug.keystore')
              keyAlias 'androiddebugkey'
              keyPassword 'android'
              storePassword 'android'
          }
      
          release {
              if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                  storeFile file(MYAPP_RELEASE_STORE_FILE)
                  storePassword MYAPP_RELEASE_STORE_PASSWORD
                  keyAlias MYAPP_RELEASE_KEY_ALIAS
                  keyPassword MYAPP_RELEASE_KEY_PASSWORD
              }
          }
      }
      

      同样在 android\app\build.gradle 中,确保您要发布的 buildTypes 包含正确的 signingConfig 行。

      buildTypes {
          debug {
              signingConfig signingConfigs.debug
          }
          release {
              signingConfig signingConfigs.release
              ...
              ...
          }
      }
      

      就这样,用这些属性更新你的 gradle.properties 文件

      MYAPP_RELEASE_STORE_FILE="Key Store Name"
      MYAPP_RELEASE_KEY_ALIAS="Key Store alias"
      MYAPP_RELEASE_STORE_PASSWORD="Key Store Password"
      MYAPP_RELEASE_KEY_PASSWORD="Key Password"
      

      【讨论】:

      • 哦,是的!我的 build.gradle 文件中没有调试密钥库。我现在添加了它,但是当我尝试运行 react-native run-android 时,我收到一个错误,即签名与以前安装的版本不匹配 Execution failed for task ':app:installDebug'. > com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.noblr_android signatures do not match the previously installed version; ignoring!
      • 我只需要从我的模拟器中卸载应用程序。这可能是一个愚蠢的问题,但现在我正在生成一个调试 apk,我无法将它上传到播放控制台上以分发给我作为内部测试组添加的团队。是否可以将调试 apk 分发给内部测试团队?或者我可以增加我的版本以继续推出内部测试吗?
      • 你必须增加你的发布版本才能在线分发它并通过以下命令生成发布 apk cd android 然后 gradlew assembleRelease
      • 我也这样做了。我可以使用新版本代码上传新生成的 apk,但是当我在手机上更新应用程序时,它要么强制停止,要么显示过时的版本。我正在更新 build.gradle 文件中的版本代码和版本名称
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2020-07-27
      • 2017-04-07
      • 2019-06-10
      • 2020-08-07
      相关资源
      最近更新 更多