gpt4 book ai didi

android - Gradle(Android)中每个构建变体的单独源文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:03 30 4
gpt4 key购买 nike

我们的应用程序有免费和付费版本。我们还制作品牌版本,这意味着应用程序在两个维度上有所不同。

四个版本可能是:

  • 应用程序,耐克编着。免费
  • APP,耐克编着。付费
  • 应用程序,阿迪达斯编着。付费
  • 应用程序,阿迪达斯编着。免费

我现在的解决方案是有两种构建类型,付费的和免费的:

  buildTypes {
paid {
packageNameSuffix ".paid"
}

free {
packageNameSuffix ".free"
}
}

还有两种构建风格:

productFlavors{
nike{
packageName "com.example.theapp.nike"
}

adidas{
packageName "com.example.theapp.adidas"
}

}

该应用程序的每个免费版本都使我们成为一个内容提供者,一个内容提供者,它是特定于每个 flavor 构建类型组合的。问题是我不知道将基于构建变体的源文件放在哪里。放入 /src/nike/src/free 的源文件将根据构建类型或风格来选择。但是取决于构建变体(类型和风格的组合)的源文件呢?

最佳答案

您可以在 src 下为您拥有的每个构建或风格创建一个新文件夹。即:“免费”、“付费”、“耐克”、“阿迪达斯”。

根据类型构建时,您放入这些文件夹中的任何文件都会被拾取并同时构建。

根据 Gradle Plugin User Guide在 Android 工具项目网站上:

Similar to Build Types, Product Flavors also contribute code and resources through their own sourceSets.

The following rules are used when dealing with all the sourcesets used to build a single APK:

  • All source code (src/*/java) are used together as multiple folders generating a single output.
  • Manifests are all merged together into a single manifest. This allows Product Flavors to have different components and/or permissions, similarly to Build Types.
  • All resources (Android res and assets) are used using overlay priority where the Build Type overrides the Product Flavor, which overrides the main sourceSet.
  • Each Build Variant generates its own R class (or other generated source code) from the resources. Nothing is shared between variants.

这意味着您的构建类型“free”的 java 文件将覆盖您的口味“nike”的同名文件。

但如果您要向 list 添加内容,根据上面列表中的第二点,最终 list 将是所有 list 的合并。

如果您需要更多定制,您可以将文件放在构建变体的文件夹“src/freeNike/”中。

关于android - Gradle(Android)中每个构建变体的单独源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316283/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com