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

四个版本可能是:

  • 该应用程序,耐克(Nike)版。免费
  • APP,耐克编辑。付费
  • 该应用程序,阿迪达斯(Adidas)版。付费
  • 该应用程序,阿迪达斯(Adidas)版。免费

  • 我现在的解决方案是拥有两种构建类型,付费和免费:
      buildTypes {
            paid {
                packageNameSuffix ".paid"
            }
    
            free {
                packageNameSuffix ".free"
            }
        }
    

    有两种 flavor :
    productFlavors{
        nike{
            packageName "com.example.theapp.nike"
        }
    
        adidas{
            packageName "com.example.theapp.adidas"
        }
    
    }
    

    该应用程序的每个免费版本都使我们成为一个内容提供者,一个针对每种 flavor 构建类型组合而特定的内容提供者。问题是我不了解将基于构建变体的源文件放在何处。放入/src/nike或/src/free的源文件将根据构建类型或风格来选择。但是依赖于构建变体(类型和 flavor 的组合)的源文件又如何呢?

    最佳答案

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

    在构建时,根据类型和构建方式,都会拾取放置在任何这些文件夹中的文件。

    根据Android Tools Project网站上的Gradle Plugin User Guide的说法:







    这意味着,如果buildType为“free”的java文件具有相同的名称,则它们将覆盖其味道为“nike”的java文件。

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

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

    10-07 19:17
    查看更多