react-native android打包

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

 

你可能感兴趣的:(React-Native)