使用 Espresso 测试具有 minSdkVersion= 的项目时出现清单合并错误 "14"



我无法使用新的清单合并进行构建。Gradle抱怨我的测试用的是minSdkVersion="14",而Espresso用的是minSdkVersion="8"。我实际上没有清单我的测试文件夹(androidTest),但看起来清单合并正在临时文件夹中创建一个。

由合并创建的临时清单:

    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
    <application>
        <uses-library android:name="android.test.runner" />
    </application>
    <instrumentation android:name="com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
                     android:targetPackage="mypackage.android"
                     android:handleProfiling="false"
                     android:functionalTest="false"
                     android:label="Tests for mypackage.android"/>
</manifest>

错误和调试日志:

Merging uses-sdk with lower test manifest:5:5   
Merging application with lower test manifest:7:5
Merging result:ERROR                            
{PATH_TO_PROJECT}buildintermediatesexploded-aarcom.jakewharton.espressoespresso1.1-r2AndroidManifest.xml:0:0 Error:
        uses-sdk:minSdkVersion 8 cannot be smaller than version 14 declared in library test manifest
:MyApp:processDebugTestManifest FAILED          
:MyApp:processDebugTestManifest (Thread[Daemon Thread 6,5,main]) completed. Took 0.107 secs.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':MyApp:processDebugTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version 14 declared in library test manifest

知道我能做些什么来解决这个问题,还是它是一个错误与清单合并?

尝试将这行添加到您的build.gradle

android {
    useOldManifestMerger true
    ...
}

此问题将在此票据的CL被释放时解决:

https://code.google.com/p/android/issues/detail?id=71147

最新更新