2013-07-01 49 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中的清單合併。