参照React-Native的过程
配置好证书
在gradle构建好了之后
cd android
调用 ./gradlew assembleRelease
即可
中间遇到的问题:
java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.signing.KeytoolException: Failed to read key mykey-alias from store
"/Users/wulong/Desktop/Project/BinmoBackEndNative/android/app/android.keystore": No key with alias 'mykey-alias' found in keystore /Users/wulong/Desktop/Project/BinmoBackEndNative/android/app/android.keystore
android.keystore创建好了之后 这个 ALIAS 默认就是名字 - android
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
在一些第三方库会报这个问题
网上有很多说在gradle.properties中增加个配置,但是增加也是没有解决。
解决方案: 编译的版本配置不正确。 原版本号:
android {
//
compileSdkVersion 24
buildToolsVersion '28.0.3'
defaultConfig {
minSdkVersion 21
targetSdkVersion 24
}
修改之后:
android {
//
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
}
解决
针对目前环境的codepush flow处理 :
打包 - (android/app/src/main/assets/) 中没有index.android.bundle的话 那就调用
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
另外在安卓上codepush检测是否更新的依据就是以生成的CodePushHash为参考
如果在staging的状态下 编译运行后没有生成这个文件 , 那就在release的状态下操作一遍,
然后将release生成的CodePushHash (生成路径- " app/build/generated/assets/react/release/ ") 文件拷贝到main/assets (也就是打包的目录) 即可
apk打包 - 先删除
android/app/src/main/res
中bundle的文件内容 可以通过git查看删除 只保留(index.android.bundle 因为这个时候打包apk最后会抛出FAILURE: Build failed with an exception.
原因未知 当前我的开发环境
RN 0.59 / AS 3.4.1
目前该问题已经有人提交到rn的issue https://github.com/facebook/react-native/issues/22046)