因此,要求是向清单中定义的活动添加意图类别标志。我已经有5个构建变体,对于一个构建变体,我有另外5个在teamcity中配置的选项。此类别应仅适用于一种构建变体类型。
我搜索了堆栈溢出的帖子,只获得了使用产品风味的选项。我已经使用了清单的activity-alias
属性,并为这个构建变体创建了一个不同的Manifest文件,但我想忽略同一构建变体的其他版本的清单文件。
我怎样才能做到最好?
可能不需要代码,但如果需要,我会分享。
修改 假设结构是这样的:
app
-src
-- main
-- build_variant_name_1
--- AndroidManifest.xml
-- build_variant_name_2
--- build_variant_name2_1.xml ( i want the new manifest for this alone)
---- AndroidManifest.xml
--- build_variant_name2_2.xml
-- build_variant_name_3
--- AndroidManifest.xml
我不想为build_variant_2_1创建新的构建类型,因为这意味着我可能需要创建新构建变体类型的所有其他更改。
1. Is it feasible to make these changes programmatically?
2. Is it feasible to do this via some conditions or something of the sort?
答案 0 :(得分:0)
我在google-services.json
文件中做了类似的事情,其中我需要google-services.json
的变体用于不同的构建。您可以跳过为那些应使用默认清单的变体放置清单文件。
app
-src
-- main
-- build_variant_name_1
--- AndroidManifest.xml
-- build_variant_name_2
--- AndroidManifest.xml
-- build_variant_name_3
--- AndroidManifest.xml
通过定义口味,您将增加构建。假设你有两种这样的味道
productFlavors {
flavourOne {
}
flavourTwo {
}
}
比你有构建
目录结构将扩展如下。
app
-src
-- main
-- flavourOne
--- AndroidManifest.xml
-- flavourOnebuild_variant_name_1
--- AndroidManifest.xml
-- flavourOnebuild_variant_name_2
--- AndroidManifest.xml
-- flavourOnebuild_variant_name_3
--- AndroidManifest.xml
-- flavourTwo
--- AndroidManifest.xml
-- flavourTwobuild_variant_name_1
--- AndroidManifest.xml
-- flavourTwobuild_variant_name_2
--- AndroidManifest.xml
-- flavourTwobuild_variant_name_3
--- AndroidManifest.xml
为了保留一种口味的常见内容,它将被放置在flavor目录下,而不需要为所有构建变体提供它。
你可以定义下面的常量
productFlavors {
flavourOne {
resValue "string", "INTENT_CATEGORY_FLAG_NAME", 'android.intent.category.LAUNCHER'
}
flavourTwo {
resValue "string", "INTENT_CATEGORY_FLAG_NAME", ''
}
}
您可以创建以下
的变体<category android:name="@string/INTENT_CATEGORY_FLAG_NAME" />
现在,BuildVariant_2将为flavorTwo和flavourOne提供空类别。它将具有类别android.intent.category.LAUNCHER
。
希望我解释得很好,它解决了你的问题,或者至少给你一个方向。