问题描述
我确实有如下结构。我想像这样使用不同的 manifestPlaceHolder,projectXTest、projectXDev、projectXProd 都使用不同的 manifestPlaceHolder,而 projectYTest、Prod、Dev 使用相同的 manifestPlaceHolder。除了将这些值放入所有不同风格的 string.xml 之外,我还能做什么
android {
buildTypes{
debug{
// Some debug setup
}
release{
// Some release setup
}
}
flavorDimensions "project","default"
productFlavors {
projectX{
dimension 'project'
}
projectY{
dimension 'project'
}
Test{
dimension 'default'
}
Dev{
dimension 'default'
}
Prod{
dimension 'default'
}
}
}
解决方法
既然我能找到这个。我遵循了这个步骤。我希望,如果有人发现她/他自己处于这种情况,这会有所帮助。
首先
将清单放在所需的风味目录中,对于我的示例,我将 android 清单放在 src/projectY 和 src/projectX
注意这些不是完整的清单。它应该像下面这样分层
<manifest>
<application>
<activity>
android:name=".x.loginActivity"
tools:node="merge" // this is must
// your flavor spesific code
</activity>
</application>
</manifest>
其次
在主 XML 中将您的代码删除到最少。我的意思是您在 src/flavor 中创建的清单将与主要清单合并。这样就删除了你想分开的,把你想用的留在main里通用。
第三
如果您需要分离 prod、dev 和 staging,请提供不同的 manifestPlaceholder 名称。 例如,
src/projectX/manifest.xml
<activity>
.
.
android:host='${projectXHost}'
.
</activity>
src/projectY/manifest.xml
<activity>
.
.
android:host='${projectYHost}'
.
</activity>
在gradle中
productFlavors{
prod {
manifestPlaceholders = [projectXHost : 'xxx',projectYHost : 'yyy']
}
}
由于这是我的第一个答案,我对布局和表达感到抱歉。我希望你能理解我的意思。祝你有个美好的一天