React-Native打包APK(生成签名密钥及使用方法)

Android 要求所有应用都有一个数字签名才会被允许安装在用户手机上,所以在把应用发布到类似Google Play store这样的应用市场之前,你需要先生成一个签名的 APK 包。

生成一个签名密钥

Keytool :是一个有效的安全钥匙和证书的管理工具,Java 中的 keytool(位于 jdk\bin 目录下)可以用来创建数字证书;keystore:数字证书,是一个存储了证书的文件。文件包含证书的私钥,公钥和对应的数字证书的信息。

由于我的Java jdk安装在C:/application/Java中,所以以下操作按照该目录进行

1.通过控制台,进入到jdk的bin目录,这样 android.keystore 文件就会生成在这个目录下,签名的时候我们需要这个文件。
C:\application\Java\jdk1.8.0_144\bin>

keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore 

2.用keytool命令生成一个私有密钥,这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息。最后它会生成一个叫做android.keystore的密钥库文件。

-alias android.keystore  生成的keystore别名

-keyalg RSA  加密和数字签名的算法

-validity 1000 有效天数

React-Native打包APK(生成签名密钥及使用方法)_第1张图片

这样就生成了keystore文件,同样可以通过资源管理器找到该数字证书文件,此时,它与keytool在同一个目录下,即jdk的子目录bin下。

注意:如果是Java安装在C盘Program Files下,会提示错误:

keytool 错误:java.io.FileNotFoundException:android.keystore (拒绝访问。)  

这句话意思就是我们在C 目录下没有写入的权限;

解决办法:将Java文件夹移动至其他盘中或其他非系统文件夹中,同时修改Java的环境变量,如果通过编译器(如webstrom等),可能需要重新编译器。

设置 gradle 变量

把android.keystore文件放到你工程中的android/app文件夹下。
编辑项目目录/android/gradle.properties(项目配置,只对所在项目有效)。如果没有gradle.properties文件你就自己创建一个,添加如下的代码(注意把其中的****替换为相应密码)


MYAPP_RELEASE_STORE_FILE=android.keystore
MYAPP_RELEASE_KEY_ALIAS=android.keystore
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

把签名配置加入到项目的 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
        }
    }
}
...

生成发行 APK 包

只需在终端中运行以下命令:

cd android
gradlew assembleRelease

生成的 APK 文件位于android/app/build/outputs/apk/release/app-release.apk,它已经可以用来发布了。

测试应用的发行版本

在发行版本应该做一次最终测试。输入以下命令可以在设备上安装发行版本:

react-native run-android --variant=release

注意--variant=release参数只能在你完成了上面的签名配置之后才可以使用。 你现在可以关掉运行中的 packager 了,因为你所有的代码和框架依赖已经都被打包到 apk 包中,可以离线运行了。

你可能感兴趣的:(react-native)