我有一个带有最简单清单的库
<manifest package="com.xxx.xxx.android" />
但是这个库需要从Android清单中获取两个元数据值才能正常工作,因此为了运行我的测试,我添加了以下代码到src/test/AndroidManifest.xml
:
<manifest package="com.xxx.xxx.android"
xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<meta-data
android:name="var1"
android:value="value1"/>
<meta-data
android:name="var2"
android:value="value2"/>
</application>
</manifest>
根据我从文档中阅读到的内容,我需要在gradle
中设置新的AndroidManifest.xml
路径。我正在尝试这样做:
android {
...
buildTypes {
debug {
testCoverageEnabled true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
String sharedTestDir = 'src/sharedTest/java'
String testManifest = 'src/test/AndroidManifest.xml'
test {
java.srcDir sharedTestDir
manifest.srcFile testManifest
}
androidTest {
java.srcDir sharedTestDir
manifest.srcFile testManifest
}
}
testOptions.unitTests.includeAndroidResources true
}
但是它并不起作用,我无法在测试中获取元数据。只有当我为main
设置manifest.srcFile
而不是test
和/或androidTest
时才有效。
AndroidManifest.xml
正常工作的,但我只能想象,在build.gradle
中更改路径可能会破坏默认行为。是否有更详细的错误消息,说明为什么合并失败? - Martin ZeitlerLibManifest.xml
没有application
标签 - 而SampleManifest.xml
也没有打开application
标签... 这可能解释了Manifest merger failed with multiple errors
,请参见 https://developer.android.com/studio/build/manifest-merge - Martin Zeitlertools:replace="android:value"
在我的示例中有效。将此添加到原始答案可能会有所帮助。这个链接也非常有用 https://dev59.com/n1sV5IYBdhLWcg3wuxCM#42023614 - Victor Laerte