0

因此,要求是将意图类别标志添加到清单中定义的活动。我已经有 5 个构建变体,对于一个构建变体,我在 teamcity 中配置了 5 个其他选项。并且此类别应仅应用于一种构建变体类型。

我已经搜索了有关堆栈溢出的帖子,并且只获得了使用产品风味的选项。我已经使用了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?
4

1 回答 1

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 {
    }
}

比你有构建

  1. flavorOnebuild_variant_name_1
  2. flavorOnebuild_variant_name_2
  3. flavorOnebuild_variant_name_3
  4. flavorOneDebug
  5. flavorOneRelease
  6. flavorTwobuild_variant_name_1
  7. flavorTwobuild_variant_name_2
  8. flavorTwobuild_variant_name_3
  9. flavorTwoDebug
  10. 风味双释放

目录结构将扩展如下。

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 的空类别,而 flavorOne 将有 category android.intent.category.LAUNCHER

希望我解释得很好,它可以解决你的问题,或者至少给你一个方向。

于 2017-10-18T10:27:36.917 回答