2017-02-28 42 views
1

我正在研究多風味的產品。我希望能夠按照每種風格禁用和啓用清單中的組件。我已經能夠通過以下方式來創建bool.xml文件到AndroidManifest.xml中這樣的依賴性:Can Manifest值取決於build.gradle文件

<activity 
    android:name=".ui.activities.SpecialActivity" 
    android:enabled="@bool/is_activity_enabled_in_manifest"/> 

我可以建立從的build.gradle到AndroidManifest.xml中相同的依賴?

回答

2

看看Manifest Placeholders

基本上,你在gradle這個文件中指定的變量:

android { 
    defaultConfig { 
     manifestPlaceholders = [hostName:"www.example.com"] 
    } 
    ... 
} 

然後從AndroidManifest.xml

<intent-filter ... > 
    <data android:scheme="http" android:host="${hostName}" ... /> 
    ... 
</intent-filter>  

指他們在你的情況下,這可以應用於:

android { 
    defaultConfig { 
     manifestPlaceholders = [ isActivityEnabled:"true" ] 
    } 

    buildTypes{ 
     debug{ 
      // Some debug setup 
     } 
     release{ 
      // Some release setup 
     } 
    } 

    productFlavors { 
     // List of flavor options 
    } 
    productFlavors.all{ flavor-> 
     if (flavor.name.equals("someFlavor")) { 
      if (buildType.equals("release")) { 
       manifestPlaceholders = [ isActivityEnabled:"false" ] 
      } else { 
       manifestPlaceholders = [ isActivityEnabled:"false" ] 
      } 
     } else { 
      if (buildType.equals("release")) { 
       manifestPlaceholders = [ isActivityEnabled:"true" ] 
      } else { 
       manifestPlaceholders = [ isActivityEnabled:"true" ] 
      }  
     } 
    } 
} 

的以上片段摘自this問題。