release 打包之后代码没更新的解决
注意:下面这种方式,即便是首次生成 apk 也是可以使用的!没有问题!
1.先生成 index.android.bundle 文件
一般来说,我们的打包操作是:cd android
进入安卓工程目录 ./gradlew assembleRelease
开始打包
这里可能会卡在:app:bundleReleaseJsAndAssets 这个状态一直不动(也可能不会),这个时候直接 control + c 放弃打包
首先先在android/app/src/main/下建立assets文件夹!
然后看一下有没有 index.android.js 文件,如果有:
首先我们在项目根目录下执行react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output App/src/main/assets/index.android.bundle --assets-dest App/src/main/res/
注意:
需要在根目录执行
根据版本不同,如果入口配置文件不是 index.android.js,就改为相应的入口文件名,比如‘index.js’
我们这里新版的是这样生成 index.android.bundle:
bashreact-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
output 的目录应为安卓的目录下,去生成 index.android.bundle 文件,如果目录因版本变化就修改为对应的路径
这样就会生成index.android.bundle文件,然后就可以每次打包都识别到更新了!

重新打包
处理好上面的步骤后,我们进入安卓的工程目录下,输入./gradlew assembleRelease -x bundleReleaseJsAndAssets
尝试打包。
新的命令:
./gradlew assembleRelease -x bundleReleaseJsAndAssets
代码更新了 APP 没有变化?
这时我们应该发现 APP 已经打包成功了,但是安装在手机上后发现代码没有更新,这是因为每次打包前都需要生成一个新的 index.android.bundle 文件,这时我们需要进入安卓工程目录,进到/src/main/assets
下删除旧的 index.android.bundle 文件,在重复执行react-native bundle --platform android --dev false --entry-file index.js --bundle-output App/src/main/assets/index.android.bundle --assets-dest App/src/main/res/
这个步骤,再尝试打包即可
也就是说,每次都必须要先删除 index.android.bundle,然后再重新生成 index.android.bundle 文件
而且最好是先./gradlew clean 一下,然后再删除再生成,再打包!每个步骤都不能少!
总结:
bash新建 android/app/src/main/assets 文件夹 delete index.android.bundle(手动) cd .. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res cd android ./gradlew clean ./gradlew assembleRelease -x bundleReleaseJsAndAssets
打包报错:Execution failed for task ':app:mergeReleaseResources'
解决办法:
build.gradle(android/app 下面的)的 defaultConfig 配置项中添加:
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
android {
compileSdkVersion 30
buildToolsVersion '30.0.3'
defaultConfig {
applicationId "xxxx"
minSdkVersion 21
targetSdkVersion 30
//解决Execution failed for task ':app:mergeReleaseResources'.
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
}
}