ReactNative 安卓打包APK踩坑记录
1.生成签名密钥。
进入指定目录下 以管理员身份运行 cmd窗口,然后进入jdk的bin文件目录,一般会在C:\Program Files\Java\jdkx.x.x_x\bin,,不然最后创建keystore文件时会提醒拒绝访问
,在bin文件路径下输入下列字符回车(-alias 后面的斜体字是签名文件的alias,需记住后面需要用)
c:\Program Files\Java\jdk1.8.0_45\bin>keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000。
按步骤输入提示的内容,都可以随便输入,只是些基本信息,到了最后一步要求输入“该单位的双字母国家/地区代码是什么?”,会提示“[否]:”,请输入"y"然后回车即可,按要求输入密钥,及密钥确认(输入时不显示,输完回车即可)。即可看到生成的keystore文件。
2.将生成的keystore文件放入RN项目的app文件路径下
3.打开android路径下的gradle.properties,添加如下代码
MYAPP_RELEASE_STORE_FILE=“你的keystore文件名字,记得带.后缀”
MYAPP_RELEASE_KEY_ALIAS=“之前让你记住的alias”
MYAPP_RELEASE_STORE_PASSWORD=之前设置的密钥
MYAPP_RELEASE_KEY_PASSWORD=之前设置的密钥
4.打开android\app\build.gradle,
找到 enableProguardInReleaseBuilds=false 改为true(官方文档没说,但是有的地方说了,不知道管用不管用)
找到 signingConfigs{},在下面添加
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file("D:/vueProject/projectTest/android/app/my-release-key.keystore")
storePassword "你的storePassword"
keyAlias "你的keyAlias "
keyPassword "你的keyPassword "
}
切记!!!storeFile file()斜线/一定不要输入成反斜线\,windows反正是这样,这个坑坑了我半天。MacOS不知道是需要斜线还是反斜线。
接下来还是在build.gradle中 添加signingConfig signingConfigs.release,添加完效果如下。
buildTypes{
release{
......
signingConfig signingConfigs.release
}
}
5.最后在项目根目录下运行命令cd android gradlew assembleRelease
如已经进入android路径下 则只需运行 gradlew assembleRelease。
官方文档如下
$ cd android
$ ./gradlew assembleRelease,
window环境下,无需输入$ ./。亲测好用,原理不知。
接下来就是漫长的等待,打包过程比android studio 原生打包还慢,可能会报几个方法过时的错误。打好的apk包在 项目\android\app\bulid\outputs\apk\release下
完!