React Native安卓版本打包

  • 使用Android Studio打包

一、创建assets文件夹

$ mkdir -p android/app/src/main/assets

二、在main目录下生成assets文件夹,用于存储index.android.bundle

$ react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

三、使用Android Studio打包

build => Generate Signed APK 进入打包界面,创建签名信息,打包Release版本。
  • 用命令行打包

一、创建签名秘钥

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

二、设置gradle变量

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

编辑~/.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=*****

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

编辑项目目录下的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
        }
    }
}
...

四、打包Release版本

$ cd android & ./gradlew assembleRelease

备注:

  1. $代表根目录
  2. 用Android Studio创建index.android.bundle后,再使用命令行方式可能会打包失败,解决方案参考GItHub上的issue:
    https://github.com/facebook/react-native/issues/5787
android/app/build/intermediates/res/merged/release/drawable-xhdpi/*.png: error: Duplicate file.

android/app/build/intermediates/res/merged/release/drawable-xhdpi-v4/*.png: Original is here. The version qualifier may be implied.

......

Execution failed for task ':app:processReleaseResources'.
> Failed to execute aapt

Release打包错误

1. Couldn’t follow symbolic link.

Could not list contents of '~/.pro/node_modules/redent/node_modules/.bin/strip-indent'. Couldn't follow symbolic link.

解决方法,需要尝试哪个有效(我是第三个起了作用):

- 删除 node_modules/.bin
或者
- 删除后重装 rm -rf node_modules && npm install
或者
- 删除报错文件unlink ~/.pro/node_modules/redent/node_modules/.bin/strip-indent

备注:

不限于这个strip-indent文件,其它文件,遇到这个错误Couldn’t follow symbolic link.,也可以使用unlink删除.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注