React Native 打包Android应用

232 阅读2分钟

一、生成签名密钥

进入Android/app目录,执行以下命令

keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

这条命令会要求你输入

密钥口令这里可以随便输,比如:123456
名字与姓氏可空|随便填
单位名称可空|随便填
组织可空|随便填
城市可空|随便填
省市区可空|随便填
是否正确Y

2024-03-14 10.01.44.png

此时app目录会多出一个 my-release-key.keystore 文件

二、设置 gradle 变量

进入gradle.properties文件,将一下代码添加到末尾

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore  
MYAPP_RELEASE_KEY_ALIAS=my-key-alias  
MYAPP_RELEASE_STORE_PASSWORD=123456 // 之前输入的密钥口令 123456
MYAPP_RELEASE_KEY_PASSWORD=123456 // 之前输入的密钥口令 123456

三、把签名配置加入到项目的 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 {
            ...
            // 修改这行后面debug为release
            // signingConfig signingConfigs.debug
            signingConfig signingConfigs.release
        }
    }
}
...

四、针对不同的 CPU 架构生成 APK 以减小 APK 文件的大小

默认情况下,生成的 APK 会同时包含针对于多种 CPU 架构的原生代码。这样可以让我们更方便的向其他人分享这个 APK,因为它几乎可以运行在所有的 Android 设备上。但是,这会导致所有设备上都有一些根本不会运行的代码,白白占据了空间。目前安卓设备绝大多数是 ARM 架构,因此对于大部分应用来说可以考虑去掉 x86 架构的支持(但是请注意模拟器大部分是 x86 架构,因此去掉 x86 架构后将无法在模拟器上运行)。

// 这步可不做
// def enableSeparateBuildPerCPUArchitecture = false
def enableSeparateBuildPerCPUArchitecture = true

五、生成发行 APK 包

1、React Native默认打包

cd android  
// windows 可能需要去掉 ./
./gradlew assembleRelease

build 打包后生成apk目录: ~/android/app/build/outputs/release/app-release.apk
~表示项目路径

截屏2024-03-14 10.55.53.png

2、使用其他工具打包

// 在项目根目录执行
yarn add react-native-upload -D

未完待续

3、用Android studio打包react native项目 apk