忽略相同构建类型变体的某些apks的清单文件
问题描述:
因此,需要将意向类别标志添加到清单中定义的活动。我已经有5个构建变体,并且对于一个构建变体,我有5个在teamcity中配置的其他选项。而这个类别只应用于一个构建变体类型。忽略相同构建类型变体的某些apks的清单文件
我已经通过堆栈溢出的帖子进行了搜索,只获得使用产品风味的选项。我已经使用了清单的activity-alias
属性,并为这个构建变体创建了不同的清单文件,但是我想忽略相同构建变体的其他版本的清单文件。
我该如何做到最好?
代码可能不是必需的,但如果需要,我会分享。
编辑: 假设的结构是这样的:
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?
答
我做了类似的事情,与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 {
}
}
比你有建立
- flavourOnebuild_variant_name_1
- flavourOnebuild_variant_name_2
- flavourOnebuild_variant_name_3
- flavourOneDebug
- flavourOneRelease
- flavourTwobuild_variant_name_1
- flavourTwobuild_variant_name_2
- flavourTwobuild_variant_name_3
- flavourTwoDebug
- flavourTwoRelease
和目录结构将扩大如下。
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
为了保持一种风味的共同点,它将被放置在风味目录下,不需要为所有构建变体提供它。
比你能定义常量像下面
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
类别。
希望我解释清楚,它解决了你的问题,或者至少给你一个方向。
谢谢,但是我已经完成了这个,但是'build_variant_name_2'里面还有其他的变体(其文件夹还没有被创建),因此你可以以某种方式生成 –
所以,我想保留清单文件的' build_variant_name_2'并忽略其他变体 –
@ Rat-a-tat-a-tatRatatouille您能详细说明一下原因吗?我认为只保留一个“build_variant_name_2”清单将覆盖'build_variant_name_2'的默认清单。如果您想为其使用默认清单,则无需为其他变体放置清单。 –