Я хотел бы создать проект Android, который совместим, например. API 4, но все равно хотел бы протестировать его с помощью UiAutomator, для которого требуется уровень API 18 на более новых устройствах. Таким образом, приложение также будет работать на старых устройствах, но автоматические тесты будут выполняться на новых устройствах.
Поэтому я создал новый проект с Android Studio и добавил тестовые библиотеки UiAutomator:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
androidTestCompile 'com.android.support:support-annotations:23.0.1'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.android.support.test:rules:0.3'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
}
При компиляции я получаю сообщение об ошибке
Error:Execution failed for task ':app:processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 4 cannot be smaller than version 8 declared in library [com.android.support.test:runner:0.3] /Users/dom/Entwicklung/MacBookPro/git/GradleTest/app/build/intermediates/exploded-aar/com.android.support.test/runner/0.3/AndroidManifest.xml
Suggestion: use tools:overrideLibrary="android.support.test" to force usage
Добавление
<uses-sdk tools:overrideLibrary="android.support.test"/>
для AndroidManifest.xml возникает другая ошибка:
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 4 cannot be smaller than version 7 declared in library [com.android.support:appcompat-v7:23.0.1] /Users/dom/Entwicklung/MacBookPro/git/GradleTest/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/AndroidManifest.xml
Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage
Изменение его на
<uses-sdk tools:overrideLibrary="android.support.test, android.support.v7.appcompat"/>
снова вызывает первую ошибку:
Error:Execution failed for task ':app:processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 4 cannot be smaller than version 8 declared in library [com.android.support.test:runner:0.3] /Users/dom/Entwicklung/MacBookPro/git/GradleTest/app/build/intermediates/exploded-aar/com.android.support.test/runner/0.3/AndroidManifest.xml
Suggestion: use tools:overrideLibrary="android.support.test" to force usage
Я использую новейшие инструменты для Android и сборки. Команда gradle, которую Android Studio использует для создания приложения,
Gradle tasks [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:compileDebugSources, :app:compileDebugAndroidTestSources]
поэтому проблема может быть воспроизведена, например. с
gradle :app:generateDebugAndroidTestSources :app:compileDebugAndroidTestSources
Каков правильный синтаксис для указания нескольких библиотек в инструментах: overrideLibrary? Я прочитал, что запятая и пробел будут правильными, но это, похоже, не сработает. Я много читал об этом здесь, в StackOverflow и в других местах, но, к сожалению, пока не удалось найти решение (кроме комментариев).