前言:初学reactnative,项目接近尾声,记录下一打包过程中遇到的问题

 以下步骤根据官网上的步骤,还有有一点点小区别

一:如果之前没有生成密钥文件(my-release-key.keystore),使用命令行生成

//-alias 是别名 my-key-alias 别名名称

//-validity 10000 有效期

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

注意:1:生成命令行首先要cd你工程中的android/app文件夹下,然后在执行密钥生成,不然很可能找不到生成的密钥文件,本人就在这卡了好长时间,找不到文件

          2:看别人也有用android studio生成的,研究了半天没明白

以下是步骤截图

reactnative android怎么可以支持x86_android

  注释:1处,2处 密钥生成的问题及密码,这些答案要记录一下,以防后续有用,

              3处:这时的密钥文件已经生成,去到项目目录下/android/app下可以看见,至于这个错误只是提示,可忽略

二:设置 gradle 变量

 

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

注意:~符号表示用户目录,比如 windows 上可能是C:\Users\用户名,而 mac 上可能是/Users/用户名

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

上面的这些会作为 gradle 的变量,在后面的步骤中可以用来给应用签名

三:把签名配置加入到项目的 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在 macOS、Linux 或是 windows 的 PowerShell 环境中表示执行当前目录下的名为 gradlew 的脚本文件,且其运行参数为 assembleRelease,注意这个./不可省略

localhost:app dmgcf$ cd 项目/android 
localhost:android dmgcf$ ./gradlew assembleRelease

执行完毕成功效果,可去android/app/build/outputs/apk/release/app-release.apk查看

reactnative android怎么可以支持x86_用户名_02

执行失败效果

 

reactnative android怎么可以支持x86_命令行_03

失败会显示出错处原因,可对应查看

五:期间遇到的问题

  1:

Execution failed for task ':react-native-http-cache:verifyReleaseResources'.

> com.android.ide.common.process.ProcessException: Failed to execute aapt

解决办法:

这是因为SDK版本不匹配,原因是0.57.1将Android SDK的版本更新到27了,这与大多第三方使用了原生代码的插件不兼容了,因为第三方更新不及时,SDK还是旧的版本。

可查看react-native-http-cache的build.gradle文件,修改这个build.gradle,使其与android/build.gradle(也可能是android/app/build.gradle)里面的SDK版本保持一致,将build.gradle里的compile改为implementation,因为compile已过时。然后重新打包

reactnative android怎么可以支持x86_用户名_04