我有一个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和外部的几个答案之后,我首先通过声明然后分配它来在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
的东西,从而使整个过程对我来说都是失败的。有没有办法早点获得构建类型?
答案 0 :(得分:1)
我们在buildTypes
内部的app.gradle
配置下是这样的:
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
//def newApkName = "${APP_NAME}-${variant.name}-${variant.versionName}.apk"
def newApkName = "${APP_NAME}-${variant.name}-r${COMMIT_SHA}-${BRANCH_NAME}-v${variant.versionName}-${BUILD_NUMBER}.apk"
variableFile.withWriterAppend { out ->
out.writeLine("${APP_NAME}-${variant.name}=${APP_NAME}-${variant.name}-r${COMMIT_SHA}-${BRANCH_NAME}-v${variant.versionName}-${BUILD_NUMBER}")
out.writeLine("${APP_NAME}-${variant.name}versionCode=${VERSION_CODE}")
out.writeLine("${APP_NAME}-${variant.name}versionName=${variant.versionName}")
}
output.outputFile = new File(output.outputFile.parent, newApkName)
}
}
这为gradle中定义的每个buildType
设置apk名称和输出文件夹。我们有buildTypes:
buildTypes {
debug {
buildConfigField('String', 'BUILD_ENV', '"Development"')
minifyEnabled false
}
qa {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
buildConfigField('String', 'BUILD_ENV', '"QA"')
}
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
buildConfigField('String', 'BUILD_ENV', '"Production"')
}
}
答案 1 :(得分:0)
我终于找到了一种方法(尽管不是很干净)来查看gradle任务数组:
def buildType = gradle.startParameter.taskNames.any{it.toLowerCase().contains("debug")}?"debug":"release"