react native打包

发布时间 2023-04-07 14:49:34作者: 画楼西畔游

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 参数后面跟的是自己起的别名

生成过程:

image-20220420171830727

密钥口令需要记住,最少不能低于6个字符

执行命令后生成一个my-release-key.keystore的密钥库文件

image-20220420172103625

my-release-key.keystore文件放到你工程中的android/app文件夹下

image-20220420172246782

3、设置gradle变量

编辑~/.gradle/gradle.properties(全局配置,对所有项目有效)或是项目目录/android/gradle.properties(项目配置,只对所在项目有效)

注意:~符号表示用户目录,比如 windows 上可能是C:\Users\用户名,而 mac 上可能是/Users/用户名

此处只做项目配置

image-20220420172615797

在最后面添加

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,它已经可以用来发布了。

image-20220420173539908

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

企业微信截图_16509444508999

问题出现原因:

dl.google.com 无法连接

解决办法:

1、修改hosts(推荐)
通过在线查询ip网站,找到dl.google.com的ip

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Nzk3NDEw,size_16,color_FFFFFF,t_70

打开C:\Windows\System32\drivers\etc中的hosts文件,添加进去,保存就ok了。

2、简单粗暴(不推荐)

在目录android/app/build.gradle的android里,添加:

android {
	// 添加的代码
	lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
}