2017-10-11 2 views
0

Ich erhalte die folgenden Fehler So, wenn das Gerät Farm Geräte mit Android 7.0 (und niedriger) versuchen, meine Anwendung zu installieren:AWS Geräte Farm Fehler: INSTALL_FAILED_OLDER_SDK, aber ich habe die Abwärtskompatibilität

Failed to install com.carto.advanced.kotlin.test - 
INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: 
/data/app/vmdl777879102.tmp/base.apk (at Binary XML file line #5): 
Requires newer sdk version #25 (current version is #24) 

Während es technisch korrekt, bin ich auf sdk 25 zielen, habe ich auch Abwärtskompatibilität installiert und das sollte kein Problem sein.

compile 'com.android.support:appcompat-v7:25.2.0'

Hier ist der relevante Abschnitt meines build.gradle:

compileSdkVersion 25 
buildToolsVersion "25.0.2" 
defaultConfig { 
    applicationId "com.carto.advanced.kotlin" 
    minSdkVersion 18 
    targetSdkVersion 25 
    versionCode 4 
    versionName "0.3.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    manifestPlaceholders = [HOCKEYAPP_APP_ID: "xxxx"] 
} 

Es installiert und läuft auf alles > = 18 ganz gut, habe ich es auf mehrere Geräte getestet . Was ist denn hier los?

Es ist erwähnenswert, dass ich mit Espresso-Version 2.2.2 und UIAutomator Version-v18: 2.0.0

compile 'com.android.support.test.uiautomator:uiautomator-v18:2.0.0' 
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

Bild von Fehlerseite:

Image from error page

Bild von Ergebnis Seite: enter image description here

Antwort

0

Das Problem ist nicht gelöst, aber meine eigene Frage zu beantworten, da die Frage nicht mehr relevant ist - es ist nicht mit AWS Device Farm verbunden.

Durch die Analyse der .apk des Tests, fand ich heraus, dass Android Studio einige seltsame Magie macht, wo es die Tests minSdkVersion übersteuert.

Von Androids documentation: Sie können Ihre eigene Manifest-Datei, falls erforderlich, wie zum Beispiel geben Sie einen anderen Wert für minSdkVersion oder registrieren liefen Zuhörer nur für Ihre Tests hinzufügen.

Also habe ich ein separates Manifest für meinen Test erstellt (und es verwendet es), aber build.gradle überschreibt immer noch minSdkVersion als targetSdkVersion.

Wird meine Antwort aktualisieren, wenn es gelöst ist.

+0

Ich würde sagen, dass nichts ist von AWS gelöst werden, so etwas wie Einstellung in AndroidManifest im androidTest-Verzeichnis ist eine gültige Lösung. – bajicdusko

1

Nikitah,

Das Paket, das nicht installiert werden kann, endet mit .test, die mir sagt, dass es die Instrumentierung APK ist und nicht die eigentliche Anwendung APK, die nicht installiert werden kann.

Meine Vermutung ist, dass die AndroidManifest.xml in Ihrer Instrumentierung APK die minSdkVersion auf 25 (oder nicht festgelegt) hat.

Sie können bestätigen mit aapt. Zum Beispiel:

⇒ aapt debug badging <your-instrumentation.apk> | grep -i sdkversion sdkVersion:'14' targetSdkVersion:'24'

Hoffnung, das hilft!

+0

Cheerio, es wurde tatsächlich durch das Manifest der Instrumentierung mit minSdkVersion = "23" verursacht, die AndroidManifest.xml des Tests wird jedoch automatisch generiert. Wenn ich den Test auf einem Android-Gerät mit einer niedrigeren Version (z. B. 5.1) ausführen, ist die automatisch generierte minSdkVersion korrekt - 18, wie in meinem Build.gradle angegeben. Nun, da ich eine Manifest-Datei zu meinem Test hinzugefügt habe, überschreibt es sie immer noch auf minSdkVersion = "23" Das ist etwas seltsam Android Studio Magie genau hier. – Nikitah

Verwandte Themen