更改 androidTest 清单中的 manifestPlaceholders

Change manifestPlaceholders in androidTest manifest

我有服务的清单占位符:

<service
        android:name=".MyService"
        android:process="${processName}">

在我的build.gradle中我替换了它。

android {  
    defaultConfig {
        manifestPlaceholders = [
                processName: ':Proc'
        ]
    }
}

但是对于我的浓缩咖啡测试 (androidTest),我需要 processName 中的空值。我该怎么做?

我已尝试使用 buildTypes 执行此操作,但它不起作用(BuildType 名称不能以 "androidTest" 开头)

我认为最好的方法是按照 documentation

的建议,只为您的仪器测试编写第二个 AndroidManifest

../app/src/androidTest/AndroidManifest.xml

<service
   android:name=".MyService"
   android:process="">

简单地添加清单没有帮助,因为您需要为其提供合并策略,只需使用:

 <service
   android:name=".MyService"
   android:process="" 
   tools:node="replace">

在合并清单中你应该得到正确的值。

此示例适用于 Gradle 插件 3.4.1:

android {
    unitTestVariants.all {
        it.mergedFlavor.manifestPlaceholders += [
                placeHolderName: "placeHolderValue"
        ]

        it.mergedFlavor.addResValue(new ClassFieldImpl("string", "resValueName", "resValueValue"))
    }
}