我有这种情况:4 种口味,我必须总共有 8 个构建,4 个应用程序在 list 中声明了可访问性,4 个没有。
我发现作为唯一解决方案在 list 中声明 2 个 buildType,以便我可以为 buildType 创建一个 sourceSets,指定 list src。但是通过这种方式,我正在构建
所以现在我无法访问 调试 进行测试,所以我必须创建其他 2 个 buildTypes 指定 debuggable true。最终情况是
那些只是构建类型 ,但我也有 4 种口味,所以我的构建变体是 24。
这基本上糟透了。没有办法声明默认 debug 和 release 使用的两个 sourceSet 吗?
要求
flavor1/accessibilty
flavor1/no accessibilty
flavor2/accessibilty
flavor2/no accessibilty
ecc..
首次实现
buildTypes {
noaccesibiltyDebug {
minifyEnabled false
debuggable true
}
accessibilityDebug {
minifyEnabled false
debuggable true
}
noaccessibilty {
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
accessibility {
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
noaccessibiltyDebug {
manifest.srcFile('/src/main/AndroidManifest.xml')
}
accessibilityDebug {
manifest.srcFile('/src/main/accessibility/AndroidManifest.xml')
}
noaccessibilty {
manifest.srcFile('/src/main/AndroidManifest.xml')
}
accessibility {
manifest.srcFile('/src/main/accessibility/AndroidManifest.xml')
}
}
结果
build/output/apk/accessibilty
/noaccessibilty
/accessibiltyDebug
/noaccessibiltyRelease
/debug <- **********useless**********
/release <- **********useless**********
最佳答案
我不确定您是否应该依赖构建类型。仅使用口味适合这种情况。
例如,你应该像往常一样设置你的主 list ,在你的 build.gradle 中,你可以声明一个补充 list :
android.sourceSets.flavor1{
res {
srcDir 'app/src/flavor1/res'
}
resources {
srcDir 'app/src/flavor1/res'
}
java {
srcDir 'app/src/flavor1/src'
}
manifest {
srcFile 'app/src/flavor1/AndroidManifest.xml'
}
}
然后在您的特定 flavor1 Manifest 文件中,您可以使用 tools:node 标签添加声明或删除它们,例如
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
然后 Manifest 合并工具将使用所需的声明构建您的所有风格。
关于android - 使用 Gradle 的多种口味的不同 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48763462/