2016-06-22 6 views
5

Hier ist die Sache. Ich habe eine App, die mit API 15 und höher kompatibel ist, aber da es ziemlich groß ist und ich bereits ein 65k-Methodenlimit erreicht habe, musste ich es zu einem Nachfolger der MultiDexApplication-Klasse machen. Dies verlangsamt die Build-Zeiten ein wenig, also musste ich etwas Optimierung implementieren, um den Prozess zu beschleunigen. Ich habe den folgenden Code in meinem Manifest, die deutlich reduzieren Zeiten bauen, wenn für die API-Aufbau> = 21 (aus einem anderen SO Faden genommen):Android Studio Lint - Set-API-Ebene für Flusen

productFlavors { 
     dev { 
      minSdkVersion 21 
     } 
     prod { 
      minSdkVersion 15 
     } 
    } 

Alles funktioniert perfekt, aber das Problem ist, dass während der Entwicklung Android Studio denkt, dass mein minSdkVersion SDK-Level 21 (korrekt) ist, und der Lint zeigt mir nicht inkompatible API (15-21). Was ich wirklich will, ist in der Lage zu bauen mit minSdkVersion auf 21 (Fast Build) gesetzt, aber die "Lint MinSdkVersion" auf 15, so sehe ich die Teile des Codes, die nicht mit älteren API als 21 kompatibel sind. Ich habe versucht, es zu googlen und auch AS-Lint-Vorlieben zu untersuchen, aber ich habe nichts Nützliches gefunden. Danke für Anregungen. Meine derzeitige Lösung ist es, minSdkVersion in dev flavour auf 21 zu setzen und zu überprüfen, ob es einen Fehler gibt, aber das ist nicht wirklich das, was ich will.

+0

Als Referenz dies als kommendes Feature auf dem Android issue tracker ist: https://code.google.com/p/android/issues/detail?id=200347 – Gak2

Antwort

4

This gist beantwortet Ihre Frage. Es zeigt, wie das Projekt mit dem minimalen SDK-Wert des Dev erstellt wird, während der minimale SDK-Wert für die Produktion für Lint-Warnungen beibehalten wird.

den Pfosten Zusammengefasst Sie dynamisch den minSdkVersion Wert berechnen kann:

int minSdk = hasProperty('devMinSdk') ? devMinSdk.toInteger() : 15 
apply plugin: 'com.android.application' 

android { 
    ... 
    defaultConfig { 
     minSdkVersion minSdk 
     ... 
    } 
} 

In diesem Beispiel wir überprüfen, ob devMinSdk Eigenschaft definiert, und wenn sie wahr ist - wir verwenden. Sonst sind wir standardmäßig 15.

Wie übergeben wir devMinSdk Wert, um Skript zu erstellen? Zwei Optionen:

Verwenden von Befehlszeile:

./gradlew installDebug -PdevMinSdk=21 

Mit Android Studio Vorlieben:

Zur Einstellungen (Einstellungen auf Windows) ->Bau, Ausführung, Deployment ->Compiler -> setzen -PdevMinSdk=21 in Befehlszeilenoptionen Textfeld.

Android Studio compiler options

+1

es ist ein bisschen seltsam ist dies nicht in der AS eingebaut. Danke vielmals! – vanomart

+1

Es fällt mir schwer zu verstehen, warum das funktioniert. Scheint wie ein AS-Fehler. –

Verwandte Themen