Eski bir Android uygulamasını Android Studio/Gradle uygulamasına geçirdim. Test, minSdkVersion=18
gerektiren uiautomator-v18
'a ihtiyaç duyar. Ancak, minSdkVersion
15 veya 16'ya ayarlanmış olmak istiyorum.Android: Kitaplıkta (uiautomator-v18) bildirilenden daha düşük olan minSdkVersion nasıl kullanılır?
Aynı şey üzerinde SO ile ilgili birçok soru var, ancak bu sorunu çözemiyorum.
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'
)
}
yukarıdaki hata veriyor:
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
Ama zaten overrideLibrary
kullanıyorum.
Bu mümkün değilse, "ana" ve "androidTest" için farklı minSdkVersion
olması mümkün mü?
DÜZENLEME: tatlar ekledikten sonra, ben varyantı tstDebug
inşa kullanarak test yapmak başardı. Ancak, prdDebug
ile inşa etmek androidTest'te bilinmeyen şeyler olduğunu söyleyen bir hatayla sonuçlanır (örnek: package org.hamcrest does not exist
). build.gradle
değiştirilmiş alıntı:
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"
buna androidTest
olmadan uygulama oluşturmak gerektiğini "Android Studio" anlatmak mümkün değil mi?
android {
productFlavors {
production {
minSdkVersion 15
}
uiTest {
minSdkVersion 18
}
}
...
}
Sonra uiTest
lezzet oluşturur üzerinde testler:
Eğer overrideLibrary arasında AndroidManifest sürümü değiştirmeye çalıştı mı? – Sree
@Sree: Evet, aynı sorun. – tokosh
Sonunda "tatlar" ile çalışabilirim: Tatlandırılmış testleri doğru şekilde isimlendiremedim. Yani, lezzet "dev" için test klasörü 'androidTestDev' olmalıdır. Ben bu [cevap] bulundu (http://stackoverflow.com/a/28092437/3045181) – tokosh