总体来看,和命令行打包rn的方法相差不大react
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
对比上面两条命令key一个生成keystore,一个是生成jks,而生成keystore的已通过期,咱们选用第二条
android
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore boss-release-key.jks -destkeystore boss-release-key.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12
windows
这条命令会要求你输入密钥库(keystore)[输入密钥库口令:yaya123...]和对应密钥的密码,而后设> 置一些发行相关的信息。最后它会生成一个叫作my-release-key.jks 的密钥库文件react-native
在运行上面这条语句以后,密钥库里应该已经生成了一个单独的密钥,有效期为10000天。--alias参数 > 后面的别名是你未来为应用签名时所须要用到的,因此记得记录这个别名app
1.这里主要干两件事,设置全局key.properties或者局部key.properties 2.配置grandle
这里咱们采用局部key.properties的方法框架
建立一个名为
storePassword=<password from previous step> keyPassword=<password from previous step> keyAlias=key storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>
注意: 保持文件私密; 不要将它加入公共源代码控制中 这里我将其放在我D:\chuangye\fluter\cert\boss-release-key.jks 中
测试
在gradle中配置签名,经过编辑
cd
运行flutter build apk (flutter build 默认会包含 --release选项)
blog地址 blog地址
4-:生成发行APK包
cd android && ./gradlew assembleRelease
译注:cd android表示进入android目录(若是你已经在android目录中了那就不用输入了)。
./gradlew assembleRelease在macOS、Linux或是windows的PowerShell环境中表示执行当前目录下的名为gradlew的脚本文件,且其运行参数为assembleRelease,注意这个./不可省略;而在windows的传统CMD命令行下则须要去掉./。
Gradle的assembleRelease参数会把全部用到的JavaScript代码都打包到一块儿,而后内置到APK包中。若是你想调整下这个行为(好比js代码以及静态资源打包的默认文件名或是目录结构等),能够看看android/app/build.gradle文件。
生成的APK文件位于android/app/build/outputs/apk/app-release.apk,它已经能够用来发布了
**注意
注意:请确保 gradle.properties 中没有包含_org.gradle.configureondemand=true_,不然会跳过 js 打包的步骤,致使最终生成的 apk 是一个没法运行的空壳
在把发行版本提交到 Play Store 以前,你应该作一次最终测试。输入如下命令能够在设备上安装发行版本:
$ react-native run-android --variant=release
注意--variant=release参数只能在你完成了上面的签名配置以后才可使用。 你如今能够关掉运行中的 packager 了,由于你全部的代码和框架依赖已经都被打包到 apk 包中,能够离线运行了
5-:测试应用的发行版本
cd android && ./gradlew installRelease
注意installRelease参数只能在你完成了上面的签名配置以后才可使用。 你如今能够关掉运行中的packager了,由于你全部的代码和框架依赖已经都被打包到apk包中,能够离线运行了
在debug和release版本间来回切换安装时可能会报错签名不匹配,此时须要先卸载前一个版本再尝试安装
gradlew assembleRelease 打包生成APK文件
gradlew installRelease 安装APK到手机
gradlew clean 清理上次的打包文件
6-:启用Proguard代码混淆来缩小APK文件的大小
Proguard是一个Java字节码混淆压缩工具,它能够移除掉React Native Java(和它的依赖库中)中没有被使用到的部分,最终有效的减小APK的大小。
重要:启用Proguard以后,你必须再次全面地测试你的应用。Proguard有时候须要为你引入的每一个原生库作一些额外的配置。参见app/proguard-rules.pro文件
要启用Proguard,设置minifyEnabled选项为true:
/**
我的建议:如果你的项目由于添加此属性没法运行,则删除此配置。由于,这个真的会致使各类奇怪的问题