31
對於我的構建系統,我需要構建多個應用程序變體,每個變體請求不同的權限集。這怎麼能用Gradle完成,而不需要調用一個單獨的腳本?Gradle:如何自定義Android Manifest權限?
對於我的構建系統,我需要構建多個應用程序變體,每個變體請求不同的權限集。這怎麼能用Gradle完成,而不需要調用一個單獨的腳本?Gradle:如何自定義Android Manifest權限?
我只是設法通過我的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中的清單合併。