react native打包文档
1、准备环境
当前打包环境:JDK11、Android studio 2021.1.1 Patch3 、react native 0.68.1、Node 16.14.2
2、生成密钥
使用JDK自带的keytool命令生成一个私有密钥
进入JDK的bin目录,执行如下指令
keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
注意:-alias 参数后面跟的是自己起的别名
生成过程:
密钥口令需要记住,最少不能低于6个字符
执行命令后生成一个my-release-key.keystore
的密钥库文件
把my-release-key.keystore
文件放到你工程中的android/app
文件夹下
3、设置gradle变量
编辑~/.gradle/gradle.properties
(全局配置,对所有项目有效)或是项目目录/android/gradle.properties
(项目配置,只对所在项目有效)
注意:~符号表示用户目录,比如 windows 上可能是
C:\Users\用户名
,而 mac 上可能是/Users/用户名
此处只做项目配置
在最后面添加
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore //密钥文件
MYAPP_RELEASE_KEY_ALIAS=my-key-alias //这里是别名
MYAPP_RELEASE_STORE_PASSWORD=liangws //这里填写刚刚生成密钥时设置的密钥口令
MYAPP_RELEASE_KEY_PASSWORD=liangws //一致
4、签名配置加入到项目的 gradle 配置中
编辑你项目目录下的android/app/build.gradle
,添加如下的签名配置:
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
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
}
}
}
...
上面的配置,找到对应位置添加即可
5、生成发行 APK 包
在终端输入如下命令
cd android //进入工程的android文件夹
gradlew assembleRelease //如果是linux系统,则执行./gradlew assembleRelease
生成的 APK 文件位于android/app/build/outputs/apk/release/app-release.apk
,它已经可以用来发布了。
6、修改app名称和图标
6.1修改app名称
修改apk名称和图标跟Android原生的方式一样
在android/app/src/main/AndroidManifest.xml
中找到属性
android:label="@string/app_name"
该@string/app_name
是一个变量
找到android/app/src/main/res/values/strings.xml
文件,可以看到app_name
中的字符串内容的值,修改即可。
<resources>
<string name="app_name">九天软件</string>
</resources>
注意:android stuido中的Android虚拟机运行中文名称app可能会闪退
6.2修改图标
在android/app/src/main/AndroidManifest.xml
中找到
android:icon=”@mipmap/ic_launcher”
这里的ic_launcher就是应用图标。这里也是从其他地方引用的,因此需要在被引用的地方修改。
进入android/app/src/main/res
,在mipmap–xxx
四个文件夹中,分别替换ic_launcher.png
图片即可。
7、打包过程出现的问题
7.1问题一
问题描述:打包完成后,在真机安装app,app无法发送http请求,点击登录按钮无反应,也不返回登录错误信息
解决办法:在AndroidManifest.xml
文件中,确保使用了足够的网络权限
<uses-permission android:name="android.permission.INTERNET" />
在application标签中t添加如下属性:
android:usesCleartextTraffic="true"
7.2问题二
问题描述:打包时,出现Task :app:lintVitalRelease FAILED
问题出现原因:
dl.google.com 无法连接
解决办法:
1、修改hosts(推荐)
通过在线查询ip网站,找到dl.google.com的ip
打开C:\Windows\System32\drivers\etc中的hosts文件,添加进去,保存就ok了。
2、简单粗暴(不推荐)
在目录android/app/build.gradle的android里,添加:
android {
// 添加的代码
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}