首页 > 解决方案 > 如何尽早在 build.gradle 中获取 buildtype

问题描述

我有一个 React Native 应用程序,我正在尝试指定用于存储生成的源映射的文件夹project.ext.react(我需要它来实现一个库,这将帮助我调试 JS 错误)

project.ext.react = [
        ...
        extraPackagerArgs    : [ "--sourcemap-output", "$buildDir/intermediates/assets/$buildType/index.android.bundle.map" ]
]

显然,路径应该类似于<buildDir>/intermediates/assets/<buildType>/index.android.bundle.map

(例如 <buildDir>/intermediates/assets/release/index.android.bundle.map在发布和<buildDir>/intermediates/assets/debug/index.android.bundle.map调试的情况下)

在参考了 StackOverflow 和外部的几个答案之后,我buildType通过先声明它然后分配它来获取 build.gradle:

//3rd line of build.gradle
def buildType
....
//much later
   applicationVariants.all { variant ->
    buildType = variant.buildType.name 
....

但是,这会导致一个问题,buildType即在使用后大量初始化,因此输出路径变得类似于<buildDir>/intermediates/assets/null/index.android.bundle.map,从而使我的整个过程失败。有没有办法更早地获取构建类型?

标签: androidnode.jsreact-nativegradleandroid-gradle-plugin

解决方案


我终于找到了一种方法(虽然它不是一个很干净的方法)来查看 gradle 任务数组:

def buildType = gradle.startParameter.taskNames.any{it.toLowerCase().contains("debug")}?"debug":"release"

推荐阅读