是否可以使用Gradle(而不是产品风格)将AndroidManifest添加到特定的buildType?

时间:2014-08-26 01:14:31

标签: android android-manifest android-gradle

我们正在设置一些Activity工具测试以在构建服务器上运行。由于这需要设备唤醒,我发现的选项似乎是:

  1. 将设备设置为“保持清醒”并禁用屏幕锁定

  2. 在测试用例中以编程方式禁用键盘锁(如所述here

  3. 选项1看起来不太好,因为它会浪费电池并最终导致设备显示屏上的老化。选项2似乎更可取,但我宁愿严格保留DISABLE_KEYGUARD权限来调试构建(不是发布),以便所有产品风格都是可测试的,但永远不会要求发布版本的权限。

    我知道我们可以使用sourceSets添加清单进行合并:

    android.sourceSets.development {
        manifest.srcFile 'development/AndroidManifest.xml'
    }
    

    但是我还没有找到一种等效的方法只针对特定的构建类型 - 类似这样(这是无效的):

    buildTypes {
        debug {
             manifest.srcFile 'debug/AndroidManifest.xml'
        }
    }
    

    有正式方法吗?还有其他建议吗?谢谢!

1 个答案:

答案 0 :(得分:5)

您可以使用与flavor相同的方式构建类型的sourceSets。这应该有效:

android.sourceSets.debug {
    manifest.srcFile 'debug/AndroidManifest.xml'
}

话虽如此,目录结构意味着您不需要手动配置sourceSets,除非您使用的是非默认布局。在标准结构中,您可以执行此操作,而不是在构建文件中配置sourceSets:

module_directory
+--src
   +--main
      +--AndroidManifest.xml
      +--java
      +--res
   +--flavor1
      +--AndroidManifest.xml
      +--java
      +--res
   +--debug
      +--AndroidManifest.xml
      +--java
      +--res
   +--release          
      +--AndroidManifest.xml
      +--java
      +--res