2013-07-01 80 views

回答

58

我只是设法通过我的gradle这个文件中有不同的口味,以做到这一点:

free { 
     packageName 'com.sample.free' 
     buildConfigField "boolean", "HAS_AD", "true" 
    } 

    paid { 
     packageName 'com.sample.paid' 
     buildConfigField "boolean", "HAS_AD", "false" 
    } 

,然后我创建src下一个新的文件夹,名为“自由”,并根据该所谓的“水库”

一个文件夹
src/ 
+ free/ 
| + res/ 
+ src/ 

和文件夹中创建一个新的文件“AndroidManifest.xml中”使用下面的代码:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.sample" > 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
</manifest> 

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

构建类型相似,产品口味也通过自己的sourceSets贡献代码和 资源。

与所有sourcesets处理时,使用以下规则使用 建立一个单一APK:

  • 所有的源代码(源/ */java的)用于一起作为生成单个输出的多个文件夹。
  • 清单都合并成一个清单。这允许产品香料具有不同的组分和/或权限,类似于构建类型。
  • 使用覆盖优先级使用所有资源(Android资源和资产),其中构建类型覆盖产品风味,其中 覆盖主源集。
  • 每个Build Variant从资源生成自己的R类(或其他生成的源代码)。 变体之间没有任何共享。

这意味着您可以创建src下每种口味名称的文件夹,并把你的自定义文件在其中。如果所述文件是AndroidManifest gradle,则会将其与main中的清单合并。