React Native 打包apk

本文详述了使用React Native进行APK签名的过程,包括生成签名密钥、设置Gradle变量、添加签名配置到Gradle文件、启用Proguard代码混淆等步骤,以及解决常见打包问题的方法。

一.生成签名密钥

运行以下命令,运行后会让你输入一些信息密码之类的 ---- 在 Windows 上keytool命令放在 JDK 的 bin 目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin), 你可能需要在命令行中先进入那个目录才能执行此命令 

keytool -genkey -v -keystore release.keystore -alias key-alias -keyalg RSA -keysize 2048 -validity 10000
  • -keystore  release.keystore    文件名 
  • -alias         key-alias               别名, 打包时需要用到
  • -keyalg     RSA                       加密和数字签名的算法
  • -validity    10000                    有效天数

完成之后会生成一个 release.keystore  密钥库文件, 将它放到你工程中的 android/app 文件夹下

二.设置 gradle 变量

编辑 android/gradle.properties (项目配置文件,如果没有就自己创建一个) 加入以下代码

MYAPP_RELEASE_STORE_FILE=release.keystore
MYAPP_RELEASE_KEY_ALIAS=key-alias
MYAPP_RELEASE_STORE_PASSWORD=123456
MYAPP_RELEASE_KEY_PASSWORD=123456

 

三.添加签名到项目的gradle配置文件

3.1.将以下代码添加到 android/app/build.gradle 文件中,与buildTypes平级

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
        }
    }
}

3.2.在  buildTypes 内添加

buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release  //添加这句话引用签名配置
    }
}

四.启用Proguard代码混淆来缩小APK文件的大小(可选)

Proguard是一个Java字节码混淆压缩工具,它可以移除掉React Native Java(和它的依赖库中)中没有被使用到的部分,最终有效的减少APK的大小

将 android/app/build.gradle 的 def enableProguardInReleaseBuilds 设置为 true

def enableProguardInReleaseBuilds = true  //混淆开关

五.开始打包   在/android/目录中执行以下命令   完成之后 apk 在 android/app/build/outputs/apk

./gradlew assembleRelease

打包遇到的问题1

* What went wrong:
Unable to process incoming event 'ProgressComplete ' (ProgressCompleteEvent)

解决方法:    android 目录中执行以下命令 

gradlew.bat assembleRelease --console plain

打包遇到的问题2

* What went wrong:
Execution failed for task ':app:processReleaseResources'.
> Failed to execute aapt

在 android/gradle.properties 文件中添加  原因

android.enableAapt2=false

 打包遇到的问题3

* What went wrong:
Execution failed for task ':react-native-fetch-blob:verifyReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

解决:    这个问题只有在打包时才会出现,可以看到我这里是 react-native-fetch-blob 这个包的错误, 找到 node_modules/react-native-fetch-blob/android/build.gradle 将 compileSdkVersion  buildToolsVersion  targetSdkVersion  修改成与 android/build.gradle 中的一致

更多姿势: https://reactnative.cn/docs/signed-apk-android/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值