React Native零散的坑汇总

2018-04-20  本文已影响146人  SunnyEver0

1.android 新增buildType 打包

项目遇到一个需求,需要增加一种打包类型,每日构建给质量部的测试包,所以在build.gradle下新增了一中buildType-offline,代表是非线上使用的包。测试包在每日构建时可自动在末尾版本号上面加1。
所以我们新增了一种buildType,代码如下:


    buildTypes {
        debug {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.debug
        }
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }

        offline { //测试版本配置
            initWith(buildTypes.release)
            signingConfig signingConfigs.offline
        }
    }

并在signingConfigs中新增一种offline签名配置,可以同release包的配置一样。于是兴高采烈地参考该文章进行gradle版本号自动构建配置,
安卓gradle自动构建总结
but...在使用gradlew assembleOffline打出来包后却一直卡在欢迎界面,开始分析原因:

     // Set up dev mode
def devEnabled = !targetName.toLowerCase().contains("release")
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
   commandLine("cmd", "/c", *nodeExecutableAndArgs, "node_modules/react-native/local-cli/cli.js", "bundle", "--platform", "android", "--dev", "${devEnabled}", "--reset-cache", "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir, *extraPackagerArgs)
 } else {
   commandLine(*nodeExecutableAndArgs, "node_modules/react-native/local-cli/cli.js", "bundle", "--platform", "android", "--dev", "${devEnabled}", "--reset-cache", "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir, *extraPackagerArgs)
}

enabled config."bundleIn${targetName}" ||
config."bundleIn${buildTypeName.capitalize()}" ?:
targetName.toLowerCase().contains("release")        

我们可以看到,这里面有一个devEnabled参数,发现其为true时,则开启dev模式,不会将jsbundle打入包中,而其值取决于打包命令是否包含release这个字段= =...RN真的有点坑。。。

解决方法

1.修改react.gradle的源码使其支持其他参数,如offline
不推荐,改源码这种事,被RN爸爸知道了,今后的维护是灾难。
2.修改命令增加release字段
wonderful,我们只需将buildTypes下的的offline修改为offlineRelease即可。

上一篇 下一篇

猜你喜欢

热点阅读