我非常无辜地转而使用不同的应用程序图标来表示每种产品的味道:
sourceSets.production {
res.srcDirs = ['res', 'res-production']
}
sourceSets.beta {
res.srcDirs = ['res', 'res-beta']
}
sourceSets.internal {
res.srcDirs = ['res', 'res-internal']
}
Run Code Online (Sandbox Code Playgroud)
事情是,在这之后,摇篮停止注意到任何布局文件的变化,比如res/layout/activity_faq.xml,和需要一个干净的构建每次,如果我想包括在APK我的XML的变化.
我首先想到这是一个Android Studio问题,但实际上我可以在命令行上使用纯Gradle重现它,只需查看下面显示的文件build/res/all/internal/debug/layout.
当我跑./gradlew assembleInternalDebug,它输出:
:compileInternalDebugNdk UP-TO-DATE
:preBuild UP-TO-DATE
:preInternalDebugBuild UP-TO-DATE
:prepareInternalDebugDependencies
:compileInternalDebugAidl UP-TO-DATE
:compileInternalDebugRenderscript UP-TO-DATE
:generateInternalDebugBuildConfig UP-TO-DATE
:mergeInternalDebugAssets UP-TO-DATE
:mergeInternalDebugResources
:processInternalDebugManifest UP-TO-DATE
:processInternalDebugResources UP-TO-DATE
:generateInternalDebugSources UP-TO-DATE
:compileInternalDebugJava UP-TO-DATE
:preDexInternalDebug UP-TO-DATE
:dexInternalDebug UP-TO-DATE
:processInternalDebugJavaRes UP-TO-DATE
:validateDebugSigning
:packageInternalDebug UP-TO-DATE
:assembleInternalDebug UP-TO-DATE
BUILD SUCCESSFUL
Run Code Online (Sandbox Code Playgroud)
在这里,processInternalDebugResources被证明是UP-TO-DATE …