一、生成签名密钥
命令行下输入keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
二、修改android/gradle.properties文件
- 将my-release-key.keystore文件放到项目的android/app目录下@H_301_10@
- 修改android/gradle.properties文件,增加以下内容@H_301_10@
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
*****
为第一步设置的密钥
三、修改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
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...
四、打离线包
离线包就是把RN和你写的js图片等资源都打包放入app,不需要走网络下载
项目根目录下执行react-native bundle --entry-file index.android.js --bundle-output ./android/app/src/main/assets/index.android.jsbundle --platform android --assets-dest ./android/app/src/main/res/ --dev false
参数解释:
--entry-file
js入口文件,相对路径或绝对路径
--bundle-output
存储bundle好的文件的路径
-- platform
平台,ios或android
--assets-dest
存储资源引用的目录名
--dev
如果是false,将会禁用警告,并且bundle将会进行压缩
五、生成APK
- cd到android目录@H_301_10@
- 运行
gradlew assembleRelease
,生成的APK包在android/app/build/outputs/apk/app-release.apk
下@H_301_10@
六、测试安装
gradlew installRelease
七、启用Proguard来减少APK的体积
修改android/app/build.gradle
def enableProguardInReleaseBuilds = true
八、参考链接
1.React Native安卓项目打包APK
2.生成已签名的APK
3.ReactNative打离线包-android篇