react native在使用gradle打包的时候首先需要在assets文件夹下创建index.android.bundle文件。
1.在react-native项目的根目录下运行如下命令:
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
注意在这里使用的时根目录下的index.js文件而非index.android.js文件,并且需要在android/app/src/main下创建assets文件夹。完成后就会在assets文件夹下创建两个文件。
2.添加key文件放置在app中或其他位置。
3.需要在gradle中引用key:
android {
...
signingConfigs {
release {
storeFile file("/Users/.../key.keystore")
storePassword "***"
keyAlias "***"
keyPassword "***"
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
需要注意文件引用的位置不要错了。
准备好这些后就要开始打包了。
4.运行命令行开始打包:
./gradlew assembleRelease
这个相信android并不陌生,使用gradle打包release的版本apk。但有时候却并非如人意,会出现我们意料中的问题。这里就需要仔细阅读错误日志来分析问题。
异常
1.这个错误的可能原因是gradle deamon的缓存问题
Execution failed for task ':app:bundleReleaseJsAndAssets'.
> A problem occurred starting process 'command 'node''
需要使用如下命令来清除缓存:
./gradlew --stop
2.在使用gradle 4.7版本进行打包的时候,node_modules_reactnavigation_src_views_assets_backicon.png会出现图片重复的问题
首先修改getAndroidAssetSuffix文件:node_modules\react-native\local-cli\bundle\assetPathUtils.js
在这里面需要修改部分代码:
文件中的原代码
function getAndroidAssetSuffix(scale) {
switch (scale) {
case 0.75: return 'ldpi';
case 1: return 'mdpi';
case 1.5: return 'hdpi';
case 2: return 'xhdpi';
case 3: return 'xxhdpi';
case 4: return 'xxxhdpi';
}
}
修改后代码
function getAndroidAssetSuffix(scale) {
switch (scale) {
case 0.75: return 'ldpi-v4';
case 1: return 'mdpi-v4';
case 1.5: return 'hdpi-v4';
case 2: return 'xhdpi-v4';
case 3: return 'xxhdpi-v4';
case 4: return 'xxxhdpi-v4';
}
}
之后再将android.../res文件夹下的drawable所有文件都删除
3.使用2.3的as打开3.0文件,就会提示该异常。
Error:This Gradle plugin requires Studio 3.0 minimum
需要添加如下代码在gradle.properties中:
android.injected.build.model.only.versioned = 3