React Native打包安卓APK总结(MAC版)

来源:互联网 发布:苹果整理桌面软件 编辑:程序博客网 时间:2024/06/13 11:36

步骤一:使用keytool命令生成一个私有密钥(mac)

1、进入下面的目录

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin

2、运行 下面的命令(期间会输入登录密码、秘钥密码和一堆信息随便):

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

3、成功后,会在当前目录下生成 my-release-key.keystore文件,目录如下:

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/my-release-key.keystore

4、my-release-key.keystore文件放到你RN工程中的android/app文件夹下。

5、打开自己RN工程下/android/gradle.properties 添加如下文本:

MYAPP_RELEASE_STORE_FILE=my-release-key.keystoreMYAPP_RELEASE_KEY_ALIAS=my-key-aliasMYAPP_RELEASE_STORE_PASSWORD=*****MYAPP_RELEASE_KEY_PASSWORD=*****
其中*****填写你步骤2中输入的秘钥密码

6、编辑你RN项目目录下的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        }    }    buildTypes {        release {            ...            signingConfig signingConfigs.release        }    }}

...

7、在RN工程下运行命令行:

$ cd android && ./gradlew assembleRelease

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

出现的错误一:

FAILURE: Build failed with an exception.* Where:Build file '/Users/***/Desktop/FingertipChina/android/app/build.gradle' line: 110* What went wrong:A problem occurred evaluating project ':app'.> Could not get unknown property 'MYAPP_RELEASE_STORE_FILE' for SigningConfig_Decorated{name=release, storeFile=null, storePassword=null, keyAlias=null, keyPassword=null, storeType=null, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.BUILD FAILED
解决方法:检查步骤5和6的配置。RN官网中步骤5是错误的。

错误二:

FAILURE: Build failed with an exception.* What went wrong:Could not list contents of '/Users/***/Desktop/FingertipChina/node_modules/node-pre-gyp/node_modules/.bin/nopt'. Couldn't follow symbolic link.* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.BUILD FAILED解决方法1:打开android/app/build.gradle,输入如下:
project.ext.react = [     cliPath: "node_modules/haul/bin/cli.js" ] // apply from: "../../node_modules/react-native/react.gradle"
解决方法2:在工程中找到这个路径'/Users/***/Desktop/FingertipChina/node_modules/node-pre-gyp/node_modules/.bin/nopt',发现nopy是红色(文件不存在)的,在工程中把nopy删除,统计目录下还有一个飘红文件(忘记叫啥名字了,两个字母的)也删除,就可以了。
推荐方法2,方法1会导致修改的代码不能打入apk包中,代码始终是同一份,修改了也没用