Stel andere minSdkVersion in voor testAndroid dan voor hoofdapp

Is het mogelijk om een ​​andere minSdkVersionin 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.xmlin uw map testof 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 minSdkVersiondie u opgeeft in uw app/build.gradlezal nog steeds worden gebruikt voor builds voor debugen release.

Je zult zien dat de minSdkVersionin de build.gradle van het voorbeeldprojectspecificeert api 17die 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

Other episodes