首页 > 建站教程 > APP开发,混合APP >  React-Native打包APK(生成签名密钥及使用方法)正文

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

首先用keytool.exe生成一个签名密钥


在Windows上keytool命令放在JDK的bin目录中(比如默认安装路径C:/Program Files/Java/jdkx.x.x_x/bin里面,或者搜索 keytool.exe 所在文件夹)

在命令行中输入以下命令

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


这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息。全部填写后,会问你是否正确,按下y和回车即可。该密钥有效期为10000天。--alias参数后面的别名是你将来为应用签名时所需要用到的,所以记得记录这个别名。


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


最后它会在同级目录里生成一个 my-release-key.keystore 的密钥库文件。


注意,如果出现下面的错误:

keytool 错误: java.io.FileNotFoundException: my-release-key.keystore (拒绝访问。)

java.io.FileNotFoundException: my-release-key.keystore (拒绝访问。)

        at java.io.FileOutputStream.open0(Native Method)

        at java.io.FileOutputStream.open(FileOutputStream.java:270)

        at java.io.FileOutputStream.<init>(FileOutputStream.java:213)

        at java.io.FileOutputStream.<init>(FileOutputStream.java:101)

        at sun.security.tools.keytool.Main.doCommands(Main.java:1194)

        at sun.security.tools.keytool.Main.run(Main.java:366)

        at sun.security.tools.keytool.Main.main(Main.java:359)


说明C盘没有写入权限,只要将生成的key换个位置即可,如:

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


此时,就会在D盘根目录生成 my-release-key.keystore


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


把刚才生成的my-release-key.keystore文件复制到你项目中的android/app文件夹里面


然后打开android/app里的build.gradle文件,添加如下的签名配置(差不多应该在109行附近添加)。密码与别名请修改成你自己的

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
        storeFile file("my-release-key.keystore")
        storePassword "密码"
        keyAlias "keyAlias的名字"    // 即上面命令 -alias 后的内容my-release-key
        keyPassword "密码"
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...


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


生成发行APK包

 


将命令行里的目录切换到你项目下的android目录,然后执行gradlew assembleRelease开始打包编译(若在windows的PowerShell环境中,请使用gradlew ./assembleRelease命令,mac下用./gradlew assembleRelease)


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


我这边执行了4分钟后,显示BUILD SUCCESS


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


apk文件在哪里?在 android\app\build\outputs\apk 目录里有打包好的apk