16

im UI Automator versucht, mit minSdkVersion in meinem Projekt zu verwenden, 9 und natürlich ist es nicht funktionieren, weil es API Ziel 18UI Automator in Projekt mit minSdkVersion 9

So Android Studio wirft mir diesen Fehler:

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 

Ich habe zu meinem Manifest das Tag <uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18" /> hinzugefügt, aber der Fehler wird weiterhin angezeigt, ich mache etwas falsch?

+0

Können Sie Ihre build.gradle-Datei posten? –

Antwort

0

Sie müssen Ihre App mit minSdkVersion 18 bauen, aber Sie können immer noch auf Espresso umstellen.

+1

Gibt es eine Möglichkeit, "minSdkVersion" von 18 * nur * für den androidTest Geschmack der App anzugeben? –

+0

Nichts, was ich weiß. Ich denke, du müsstest die von GRADLE generierten Aufgaben modifizieren und eine Menge daraus machen, damit es funktioniert. –

+1

Je nach Geschmack Spezifikation http://tools.android.com/tech-docs/new-build-system/build-system-concepts können Sie Geschmack mit der richtigen minSdkVersion erstellen und bauen Sie Ihre Tests mit diesem Geschmack –

37

Wenn Sie gradle verwenden, können Sie andere Manifest zum androidTest Buildtyp hinzufügen, die und erhalten verschmolzen wird keinen Einfluss auf Ihre normale Freisetzung/Debug-Builds.

app/src/androidTest/AndroidManifest.xml zu einem Projekt hinzufügen:

<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> 

Dies wird mit Ihrem normalen dem Manifest verschmelzen, erfordert nicht Ihre minSdk zu ändern. Bitte beachten Sie, dass dies wahrscheinlich zum Absturz führt, wenn Sie versuchen, UI Instrumentation Tests auf sdk

durchzuführen. Durch Hinzufügen zusätzlicher Berechtigungen zu können Sie auch einfach Berechtigungen für Ihre Tests wie externen Speicher hinzufügen, wenn Sie nicht regelmäßig benötigen sie in Ihrer App. Sie werden jedoch auch für Ihre Debug-Builds verfügbar sein.

+0

Ja, es funktioniert, danke! – validcat

+0

Gibt es irgendwelche Vorbehalte bei diesem Ansatz? Vielen Dank! –

+0

@NeonWarge keine, an die ich anders als die erwähnten Dinge denken könnte –