2017-02-28 10 views
1

私はマルチフレーバー製品を開発しています。私はフレーバーごとにマニフェストのコンポーネントを無効にして有効にしたいと考えています。私は、次のようにAndroidManifest.xmlをするbool.xmlファイルから、このような依存関係を作成することができました: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質問から取られます。

関連する問題