android - 如何尽早在 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
,从而使我的整个过程失败。有没有办法更早地获取构建类型?
解决方案
我终于找到了一种方法(虽然它不是一个很干净的方法)来查看 gradle 任务数组:
def buildType = gradle.startParameter.taskNames.any{it.toLowerCase().contains("debug")}?"debug":"release"
推荐阅读
- java - 某些请求没有检测到 RestController 的原因是什么
- api - 如何在没有 tomcat 或任何类型的服务器的情况下在 intellij 上启动 api 应用程序?
- r - 如何根据时间戳删除重复项?
- java - org.postgresql.util.PSQLException:致命:数据库“<
>" 不存在,在 AWS java lambda 中 - java - 如何从文件夹对象列表中递归获取绝对路径?
- node.js - 错误 LNK2001:在 windows 上安装依赖项时出现未解决的外部符号错误
- python-3.x - 通过串口将数据从 Matlab 发送到 Python 时遇到问题
- python - 报名参加测验的算法;程序不检查用户名是否已经存在
- c# - HasOne 与 OneToMany 的映射关系
- vue.js - 如何使用vue迭代带有图像的文章