如何仅为运行测试设置不同的 AndroidManifest.xml

Vic*_*rte 4 android gradle

我有一个具有最简单清单的库

<manifest package="com.xxx.xxx.android" />

但是这个库需要从 Android Manifest 获取两个元数据值才能正常工作,因此为了运行我的测试,我添加了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>
Run Code Online (Sandbox Code Playgroud)

正如我从文档中读到的那样,我必须AndroidManifest.xmlgradle. 我正在尝试这样做:

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
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我无法在测试中获取元数据。仅当我设置manifest.srcFilefor main, 而不是testand/or时它才有效androidTest

Mar*_*ler 5

尝试src/debug/AndroidManifest.xml与 结合使用testBuildType "debug"