安卓:
1、先生成签名秘钥:在项目主目录下执行下语句(有效期10000天)
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
之后再项目主目录下生成my-release-key.keystore文件,将该文件移动到android/app目录下
2、打包之前需要先生成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
react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/bundle/index.ios.jsbundle --assets-dest ios/assets
之后在android/app/src/main/assets目录下生成bundle文件;
如果不执行该语句能打包成功,但是运行是会闪退;
3、设置Android gradle变量
(1)在android/gradle.properties文件中加入
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=xx
MYAPP_RELEASE_KEY_PASSWORD=xx
xx表示你设置密钥时设置的密码;
(2)在android/app/build.gradle文件中添加:
android {
...
defaultConfig {
.....
}
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
splits {
.....
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
4、在项目主目录下时,执行cd android;再执行./gradlew assembleRelease进行发布版本打包,之后在android/app/build/outputs目录下生成apk
注意事项:
1、Android Studio 3.1.2编译报错报错如下
Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.
配置里面有些api过时了, 需要改成如下:
compile 改成implementation
androidTestCompile改成androidTestImplementation
testCompile 改成testImplementation