是否可以将AndroidManifest添加到具有Gradle(而不是产品风格)的特定构建类型?

是否可以将AndroidManifest添加到具有Gradle(而不是产品风格)的特定构建类型?,android,android-manifest,android-gradle-plugin,Android,Android Manifest,Android Gradle Plugin,我们正在设置一些在构建服务器上运行的活动检测测试。由于这要求设备处于唤醒状态,我发现的选项似乎是: 将设备设置为“保持清醒”并禁用屏幕锁定 在测试用例中以编程方式禁用Keyguard(如上所述) 选项1看起来不太好,因为它会浪费电池,最终会导致设备显示器老化。选项2似乎更可取,但我宁愿严格保留DISABLE_KEYGUARD权限来调试构建(而不是发布版),这样所有的产品风格都是可测试的,但发布版永远不会请求该权限 我知道我们可以使用sourceset添加要合并的清单: android.sourc

我们正在设置一些在构建服务器上运行的活动检测测试。由于这要求设备处于唤醒状态,我发现的选项似乎是:

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

  • 在测试用例中以编程方式禁用Keyguard(如上所述)

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

    我知道我们可以使用
    sourceset
    添加要合并的清单:

    android.sourceSets.development {
        manifest.srcFile 'development/AndroidManifest.xml'
    }
    
    但我还没有找到一种仅针对特定构建类型的等效方法——类似这样的方法(这是无效的):


    有没有一个官方的方法可以做到这一点?还有其他建议吗?谢谢

    对于构建类型,您可以使用与flavors相同的方法获得源集。这应该起作用:

    android.sourceSets.debug {
        manifest.srcFile 'debug/AndroidManifest.xml'
    }
    
    话虽如此,目录结构意味着您不需要手动配置源集,除非您使用的是非默认布局。在标准结构中,您可以执行此操作,而不必在生成文件中配置源集:

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

    等等。

    Brilliant,我不知道你可以为构建类型这样做。谢谢斯科特!
    module_directory
    +--src
       +--main
          +--AndroidManifest.xml
          +--java
          +--res
       +--flavor1
          +--AndroidManifest.xml
          +--java
          +--res
       +--debug
          +--AndroidManifest.xml
          +--java
          +--res
       +--release          
          +--AndroidManifest.xml
          +--java
          +--res