react-native 打包 出apk

Posted nangezi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react-native 打包 出apk相关的知识,希望对你有一定的参考价值。

 

 先上步骤: 

一、 生成签名文件(my-release-key.keystore文件)

android要求所有应用都有一个数字签名才会被允许安装在用户手机上

1.  在项目目录下运行如下命令:

 keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 

 

2. 输入密钥库口令:(如图,在输入上面的命令后,会有如下的要求)

  要求至少6个字符,一定要记住输入的内容(输入的时候 终端上是不显示输入的内容的)

  笔者在第一次打包的时候就是懵逼的,看着空荡荡的输入区域,以为键盘坏了,一顿狂按,发现回车还能用,然后在后面需要密钥的时候就。。。

  注意:请记得妥善地保管好你的密钥库文件,不要上传到版本库或者其它的地方。(React中文网提示)

3. 姓名、地址这些的就可以直接回车跳过了,在最后显示:“是否正确” 的时候 选择 是 就可以了

 

技术图片

 

4. 生成签名文件my-release-key.keystore(会在项目目录下生成)

技术图片

 

二、 将项目目录下生成的my-release-key.keystore文件,拷到 android/app 目录下

 

 

三、修改android里面的代码

1. 在android/gradle.properties文件中,加入如下代码:(此处就需要刚刚输入的密钥了)

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=******
MYAPP_RELEASE_KEY_PASSWORD=******

 

2. 在android/app/build.gradle文件在添加如下代码:

android {
    ...

    defaultConfig {
        ...
    }
    //此段是新增的
    signingConfigs {
        release {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }
    splits {
       ...
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release    //新增此句
        }
    }

    ...
}

 

注意: 把 def enableProguardInReleaseBuilds = false 改成 true

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

(此处解释来自:windows下react-native android打包笔记

 

四、最后,我们就可以执行打包命令了(以后再打包,只需要执行此命令)

gradlew assembleRelease

 

win10系统的powershell里面执行后,会报错误:

技术图片

 

 改为如下命令即可

./gradlew assembleRelease

 

最终,在不报错的情况下,会在 androidappuildoutputsapk elease目录下生成app-release.apk这个最终的打包文件

 

以上是关于react-native 打包 出apk的主要内容,如果未能解决你的问题,请参考以下文章

安卓转战React-Native之签名打包成Apk并极速多渠道打包

React-native APK打包

安卓转战React-Native之签名打包成Apk并极速多渠道打包

react-native打包apk报错

react-native 打包成apk 文件

react-native打包apk常见错误收集