使用minSdkVersion 9的项目中的UI Automator

raf*_*ael 18 testing android android-manifest android-uiautomator

我尝试使用minSdkVersion 9在我的项目中使用UI Automator,当然它不起作用,因为它针对API 18.

所以Android Studio会抛出这个错误:

Error:(5, 5) uses-sdk:minSdkVersion 9 cannot be smaller than version 18 declared in library ~/app/build/intermediates/exploded-aar/com.android.support.test.uiautomator/uiautomator-v18/2.1.1/AndroidManifest.xml

Suggestion: use tools:overrideLibrary="android.support.test.uiautomator.v18" to force usage

Error:Execution failed for task ':app:processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 18 declared in library ~/app/build/intermediates/exploded-aar/com.android.support.test.uiautomator/uiautomator-v18/2.1.1/AndroidManifest.xml

    Suggestion: use tools:overrideLibrary="android.support.test.uiautomator.v18" to force usage
Run Code Online (Sandbox Code Playgroud)

我添加了我的Manifest标签,<uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18" />但错误一直显示,我做错了什么?

Dav*_*jak 38

如果你使用gradle,你可以在构建类型中添加另一个 Manifest androidTest,它将被合并,不会影响正常的发布/调试版本.

添加app/src/androidTest/AndroidManifest.xml到您的项目:

<manifest
    package="${applicationId}.test"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)

这会将清单与您的清单合并,而无需更改您的清单minSdk.请注意,如果您尝试在sdk <18上运行UI Instrumentation测试,这可能会崩溃.

通过向debug/AndroidManifest您添加其他权限,您还可以为您的测试添加权限,例如外部存储,如果您在应用中不经常需要它们.它们虽然也可用于您的调试版本.


Szy*_*ski 0

您需要使用 minSdkVersion 18 构建应用程序,但您仍然可以切换到 espresso。