我將較舊的Android應用程序遷移到Android-Studio/Gradle。測試需要uiautomator-v18
,這需要minSdkVersion=18
。不過,我想將minSdkVersion
設置爲15或16.Android:如何使用低於庫中聲明的minSdkVersion(uiautomator-v18)
在同樣的事情上有很多問題,但我只是無法解決這個問題。
Exerpt的AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.searcher"
android:versionCode="1"
android:versionName="0.0.1" >
<uses-sdk
tools:overrideLibrary="android.support.test.uiautomator.v18"/>
<!-- ... -->
</manifest>
的的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.searcher"
minSdkVersion 15
targetSdkVersion 23
testApplicationId "com.example.searcher.test"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'
compile files('libs/dagger-1.2.1.jar')
compile files('libs/dagger-compiler-1.2.1.jar')
compile files('libs/javawriter-2.1.2.jar')
compile files('libs/javax.inject.jar')
androidTestCompile(
'com.android.support:support-annotations:23.2.0',
'com.android.support.test:runner:0.4.1',
'com.android.support.test:rules:0.4.1',
'com.android.support.test.uiautomator:uiautomator-v18:2.1.1',
'org.hamcrest:hamcrest-library:1.3',
'org.mockito:mockito-core:1.10.5',
'junit:junit:4.12',
'com.google.dexmaker:dexmaker:1.1',
'com.google.dexmaker:dexmaker-mockito:1.1'
)
}
上面給出了錯誤:
Error:Execution failed for task ':app:processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 18 declared in library [com.android.support.test.uiautomator:uiautomator-v18:2.1.1] /mypath/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
但我已經在使用overrideLibrary
。
如果這是不可能的,是否有可能有不同的minSdkVersion
「main」和「androidTest」?
編輯: 添加香精後,我能夠運行使用建變種tstDebug
測試。但是,使用prdDebug
構建它會以androidTest中存在未知內容的錯誤結束(例如:package org.hamcrest does not exist
)。的build.gradle
修改後的摘錄:
defaultConfig {
applicationId "com.example.searcher"
targetSdkVersion 23
versionCode 6
versionName "0.5.0"
}
productFlavors {
prd {
minSdkVersion 15
}
tst {
minSdkVersion 18
testApplicationId "com.example.searcher.test"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
}
// And instead of "androidTestCompile" use "tstCompile"
是沒可能告訴「機器人工作室」,它應該構建應用程序,而不androidTest
?
你嘗試過在你的overrideLibrary的AndroidManifest改變的版本? – Sree
@Sree:是的,同樣的問題。 – tokosh
我終於可以使它與「味道」運行:我沒有正確地命名風味測試。所以,對於味道「開發」測試文件夾應該是「androidTestDev」。我在這找到[answer](http://stackoverflow.com/a/28092437/3045181) – tokosh