我有这种情况:4种味道,我必须完全有8个构建,4个应用程序在清单中声明可访问性而4个不是。 我发现只有解决方案在manifest中声明了2个buildTypes,这样我就可以为buildType创建一个sourceSets,指定manifest src。但是通过这种方式,我已经建立了
所以现在我无法使用辅助功能 debug 进行测试,因此我必须创建其他2个buildTypes指定debuggable true。最后的情况是
那些只是 buildTypes ,但我也有4种味道,所以我的构建版本是24。
这基本上很糟糕。没有办法声明默认调试和发布使用的两个sourceSets?
规定我们
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')
}
}
RESULT
build/output/apk/accessibilty
/noaccessibilty
/accessibiltyDebug
/noaccessibiltyRelease
/debug <- **********useless**********
/release <- **********useless**********
答案 0 :(得分:0)
我不确定你应该依赖buildtypes。仅使用香料适应于这种情况。 例如,您应该像往常一样设置主清单,在build.gradle中,您可以声明一个补充清单:
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文件中,您可以使用工具添加声明或删除它们:node tag,例如
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
然后Manifest合并工具将使用所需的声明构建您的所有口味。