忽略相同构建类型变体的某些apks的清单文件

忽略相同构建类型变体的某些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 { 
    } 
} 

比你有建立

  1. flavourOnebuild_variant_name_1
  2. flavourOnebuild_variant_name_2
  3. flavourOnebuild_variant_name_3
  4. flavourOneDebug
  5. flavourOneRelease
  6. flavourTwobuild_variant_name_1
  7. flavourTwobuild_variant_name_2
  8. flavourTwobuild_variant_name_3
  9. flavourTwoDebug
  10. 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类别。

希望我解释清楚,它解决了你的问题,或者至少给你一个方向。

+0

谢谢,但是我已经完成了这个,但是'build_variant_name_2'里面还有其他的变体(其文件夹还没有被创建),因此你可以以某种方式生成 –

+0

所以,我想保留清单文件的' build_variant_name_2'并忽略其他变体 –

+0

@ Rat-a-tat-a-tatRatatouille您能详细说明一下原因吗?我认为只保留一个“build_variant_name_2”清单将覆盖'build_variant_name_2'的默认清单。如果您想为其使用默认清单,则无需为其他变体放置清单。 –