自定义安卓构建类型在升级到反应原生 0.58 后不起作用



我将我的应用程序从RN0.57.8升级到RN0.58.4。这包括将com.android.tools.build:gradle:3.1.4更改为com.android.tools.build:gradle:3.2.1,以及将 gradle 包装器从 4.4 更改为 4.7

现在,我的应用程序在调试和发布配置中运行良好。但我也有自定义构建类型releaseStaging.我可以成功构建它,但是当我运行它时,它崩溃并出现致命错误:Unable to load script from assets 'index.android.bundle'.

以下是我android/app/build.gradle的相关片段:

project.ext.react = [
    entryFile: "index.js",
    // Staging build type:
    // named "releaseStaging" and not just "staging" because of code-push requirements
    bundleInReleaseStaging: true,
    devDisabledInReleaseStaging: true,
    jsBundleDirReleaseStaging: "$buildDir/intermediates/assets/releaseStaging",
    resourcesDirReleaseStaging: "$buildDir/intermediates/res/merged/releaseStaging"
]
...
buildTypes {
    debug {
        resValue "string", "app_name", "Myapp DEBUG"
        applicationIdSuffix ".debug"
        manifestPlaceholders = [excludeSystemAlertWindowPermission: "false"]
    }
    release {
        manifestPlaceholders = [excludeSystemAlertWindowPermission: "true"]
        resValue "string", "app_name", "Myapp"
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
    releaseStaging {
        initWith release
        applicationIdSuffix ".staging"
        resValue "string", "app_name", "Myapp STAGING"
        matchingFallbacks = ['release']
    }
}

为了解决这个问题,我不得不降级到com.android.tools.build:gradle:3.1.4。不过,我保留了 gradle 包装器的第 4.7 版。

有谁知道一种方法可以使我的应用程序的 gradle 版本与 react-native 保持最新并使用自定义 android 构建类型?

事实证明,Android Gradle 插件 3.2 使用了新的 intermediates/merged_assets 目录而不是 intermediates/assets 。这在此 PR 中已解决,以响应本机。但是,如果您设置自定义路径,例如 jsBundleDirReleaseStaging .

但是在 react-native 0.58 中,一切都可以在没有自定义路径的情况下正常工作。所以我删除了jsBundleDirReleaseStaging,现在resourcesDirReleaseStaging和 gradle 片段如下所示:

project.ext.react = [
    entryFile: "index.js",
    bundleInReleaseStaging: true,
    devDisabledInReleaseStaging: true
]

相关内容

  • 没有找到相关文章

最新更新