react-native 打包apk 的那些坑

在使用react-native 的整个过程当中,我深一脚浅一脚的走到今天,着实为本身感到高兴。在此记录踩坑过程,阿门!html

官方文档 中有完整打包apk步骤,咱们一步步来。java

首先,咱们须要使用keytool生成一个私有秘钥,在Windows上keytool命令放在JDK的bin目录中。也就是说,命令必须在JDK安装的bin目录下运行,命令以下:react

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

接下来的过程当中,我须要输入秘钥口令及其余的一些信息,一切都很完美,就在此时,抛出一个错误:windows

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

图片描述

这个错误是说找不到my-release-key这个文件,这是因为在安装个人JDK安装到了C盘,命令行在当前路径下没有写入文件的权限。这时,能够选择两种解决方法:react-native

  1. 以管理员身份运行cmd,执行上述命令。
    有多种方法可使用,这里只叙述一种,在路径C:\Windows\System32中找到cmd.exe,右键以管理员身份运行。app

  2. 咱们能够将秘钥生成于其余盘,运行以下命令,将<MY_PATH>替换成秘钥保存路径便可。函数

    $ keytool -genkey -v -keystore my-release-key.keystore -alias
    my-key-alias - keyalg RSA -keysize 2048 -validity 20000 -keystore
    / /my-release-key.keystore gradle

接下来,设置gradle变量。官方文档有详细步骤,这里只作简单叙述ui

  1. 将刚刚生成的秘钥放到项目下的android/app文件夹下
  2. 编辑或建立~/.gradle/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=*****

最后,生成发行apk包。运行以下命令:

cd android && ./gradlew assembleRelease

在windows 系统下,可能没法识别&&命令,因此讲上述命令分为两步:先运行cd android,进入当前项目下的android文件夹,而后运行./gradlew assembleRelease,就在即将大功告成之际,报了以下错误:

Exception in thread "main" java.util.zip.ZipException: error in opening zip file

图片描述

这是因为gradle.zip下载有问题,解决方法有二。

  1. gradle-2.14.1-all.zip删除后从新运行上述命令,文件会从新下载。
  2. 手动下载文件,将其放到对应文件夹

gradle-2.14.1-all.zip文件对应位置在我的电脑上有所不一样,在我这里是C:\Users\wxl\.gradle\wrapper\dists\gradle-2.14.1-all\8bnwg5hd3w55iofp58khbp6yv

下载成功以后,再次键入命令,发现这最后一步仍是没有迈过去。系统报错:gradlew : 没法将“gradlew”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,若是包括路径,请确保路径正确,而后再试一次。

clipboard.png

官方文档中有这样一句:

./gradlew assembleRelease在macOS、Linux或是windows的PowerShell环境中表示执行当前目录下的名为gradlew的脚本文件,且其运行参数为assembleRelease,注意这个./不可省略;而在windows的传统CMD命令行下则须要去掉./

因此我在运行时,直接运行gradlew assembleRelease,实际上这样反而会报错,正确的命令就是./gradlew assembleRelease。这一步仅做为参考,可能和windows的系统版本有关。

clipboard.png

此次,打包顺利完成,如图就是咱们所打包出来的apk,生成的APK文件位于android/app/build/outputs/apk/app-release.apk

clipboard.png

写在最后,鉴于本人水平有限,如文章有错误之处,请不吝指正!(^▽^)

相关文章
相关标签/搜索