我有一个React Native应用程序,我正在尝试指定一个文件夹来像project.ext.react中那样存储生成的源 map (我需要它来实现一个库来帮助我调试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和外部的几个答案之后,我通过先声明然后分配它来获取build.gradle中的buildType:
//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,从而使我的整个过程失败。有没有办法早点获得构建类型?

最佳答案

我终于找到了一种方法(尽管不是很干净)来查看一堆gradle任务:

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

09-16 16:37