为每种风格动态更改调试/发布清单键

时间:2016-01-21 16:17:59

标签: android android-studio gradle android-gradle

我正在使用一个服务,需要在AndroidManifest中设置API密钥,如下所示:

    <meta-data
        android:name="service_api_key"
        android:value="@string/my_api_key" />

这个问题是我的应用程序有几种风格,我需要为每种风格设置不同的API密钥。每种flavor都需要有不同的API密钥才能进行调试和发布:

flavor1
- debug key: key1
- release key: key2

flavor2
- debug key: key3
- release key: key4

flavor3
- debug key: key5
- release key: key6

建议的方法是什么?

3 个答案:

答案 0 :(得分:9)

  

建议的方法是什么?

步骤1:为每个构建变体(src/flavor1Debug/src/flavor1Release/等)创建sourcesets,您需要的API密钥与{{1}中的API密钥不同}。

步骤2:在每个源集中,有一个src/main/文件,其中包含res/values/strings.xml的构建变体的值。

步骤3:啤酒。

答案 1 :(得分:1)

未经测试,但我想你可以试试这样的东西......

applicationVariants.all {variants ->
variant.productFlavors.all { flavor ->
                flavorChoosed = " ${flavor.name}"
            }
        }
release {
            switch(flavorChoosed){
            case "flavor1":
            resValue "string", "flavorId", apiKeyRealeseFlavor1
            break
            .....
            }
        }

 debug{
   switch(flavorChoosed){
                case "flavor1":
                resValue "string", "flavorId", apiKeyDebugFlavor1
                break
                .....
      }
} 
 <meta-data
        android:name="service_api_key"
        android:value="${flavorId}" />

答案 2 :(得分:1)

对于已添加到gradle文件的每个产品风味,您应该为值添加string.xml资源文件。

当您切换构建版本时,Android Studio将足够智能以获取构建的匹配值。

如果你没有指定一个,那么它默认为主要的。

编辑:

enter image description here

然后对于源集,选择productFlavor的发行版或调试版:

enter image description here