Is het mogelijk om een andere minSdkVersion
in te stellen voor tests dan voor de app zelf? Ik vraag het omdat ik de nieuwe Test Support Library en UI Automator wil gebruiken om te testen. Dit is echter alleen beschikbaar op API 18+. Tegelijkertijd wil ik nog steeds oudere versies van Android ondersteunen, zij het niet zo grondig getest. Wat moet ik hiervoor aan mijn build.gradle
-bestand toevoegen?
Ter verduidelijking, ik gebruik Android Studio en de “nieuwe” op Gradle gebaseerde projectstructuur.
Antwoord 1, autoriteit 100%
Ik heb dit van de nieuwe testsjabloonvan Google .
Maak een nieuw bestand AndroidManifest.xml
in uw map test
of androidTest
.
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:tools="http://schemas.android.com/tools"
package="your.package.name">
<uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18"/>
</manifest>
Antwoord 2, autoriteit 13%
probeer deze.
defaultConfig {
applicationId "com.test"
if (gradle.startParameter.taskNames.contains(":app:assembleDebug")) {
minSdkVersion 21
}else{
minSdkVersion 14
}
targetSdkVersion 22
versionCode Integer.parseInt(VERSION_CODE)
versionName VERSION_NAME
}
bijgewerkt 16-04-2020
U kunt ook instellen met productFlavors
android {
compileSdkVersion 29
defaultConfig {
applicationId "com.test"
targetSdkVersion 29
versionCode 1
versionName "1.0.0"
}
buildTypes {
debug {
}
release {
minifyEnabled true
}
}
flavorDimensions "default"
productFlavors {
development {
minSdkVersion 21
}
production {
minSdkVersion 16
}
}
}
Antwoord 3, autoriteit 8%
Ik heb een voorbeeld van de oplossing geüpload naar mauricegavin/android-testingomdat ik zelf geen werkende kon vinden.
De interessante module is ui/uiautomator/BasicSample/app. U zult merken dat er een AndroidManifest.xml in de directory androidTests staat. De minSdkVersion
die u opgeeft in uw app/build.gradle
zal nog steeds worden gebruikt voor builds voor debug
en release
.
Je zult zien dat de minSdkVersion
in de build.gradle van het voorbeeldprojectspecificeert api 17
die niet wordt ondersteund door uiautomator en er meestal voor zorgt dat de build mislukt.
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:tools="http://schemas.android.com/tools"
package="com.example.android.testing.uiautomator.BasicSample" >
<uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18"/>
</manifest>
Met dank aan mattblangvoor zijn antwoord dat ik voor dit voorbeeld heb gebruikt.
Antwoord 4, autoriteit 8%
Ik kreeg het volgende conflict, voor het testen had ik een hogere minSdkVersion nodig.
De oplossing die ik heb gevonden is overgenomen uit het volgende document met behulp van het buildType wijzig het testbuildtypeen het deed het werk voor mij
Het volgende is de oplossing:
android {
defaultConfig {
applicationId "com.doronkettner.ilikemovies"
...
minSdkVersion 18
...
testBuildType "staging"
...
}
...
buildTypes {
release {...}
debug {...}
staging {
initWith(buildTypes.debug) // keep versionName and PIN from 'debug'
defaultConfig.minSdkVersion 19
}
}
Wijzig het buildype naar het podium en het zou goed moeten zijn