2012-07-30 9 views
7

Ich arbeite an einer Anwendung, die ActionBarSherlock verwendet. Da es documentation betont:Kompilieren mit Android 4.X aber unterstützende API Level 9

[...] die Bibliothek erfordert, dass sowohl sie als auch Ihr Projekt mit Android kompiliert 4.0 oder höher. Das Projekt erfordert auch, dass Sie mit JDK 1.6 in Ihrem Editor und Build Systeme, die Sie möglicherweise verwenden, kompilieren.

Also, das heißt, ich meine Anwendung kompilieren werden (und die Bibliothek) gegen Android 4.X aber in meinem Manifest, erkläre ich, dass ich Targeting (zB) API-Ebene 9.

Diese Alles funktioniert gut und gut, aber es gibt etwas, das mich stört. Vom FAQ:

Welche API-Ebene sollte ich in meinem Manifest Ziel, wenn die Bibliothek?

Targeting API Level 11 oder neuer ist erforderlich, da Android automatisch die native Aktionsleiste hinzufügt, wenn sie auf neueren Geräten ausgeführt wird. Da Sie gegen neue APIs kompilieren wird aber Ihre App wird wahrscheinlich mit älteren Versionen von Android besonders vorsichtig auf Geräten ausgeführt werden müssen ergriffen werden entweder zu vermeiden, mit oder richtig überprüfen und rufen alle Methoden , die nach dem Minimum SDK eingeführt wurden Ausführung.

Das bedeutet, dass ich manuell Kontrollanruf jede Methode haben werde, so dass ich nicht verwende alle, die in meinem Ziel API-Ebene (9 in meinem Fall) nicht verfügbar sind? Das klingt falsch für mich.

Gibt es eine Möglichkeit, meiner IDE (IntelliJ) mitzuteilen, dass ich nur die API Level 9 verwende (damit ich keine automatische Vervollständigung für nicht existierende Methoden/Klassen bekomme und sie nicht verwende zufällig) und dann wählen, um es gegen eine andere Android-Version zu kompilieren?

Oder kann ich einige automatische Prüfungen (die zur Kompilierzeit ausgeführt werden), um dies zu überprüfen?

Antwort

8

Die Lint-Funktion des ADT sollte dies durch eine Warnung beheben, wenn API-Aufrufe für die falsche API-Version durchgeführt werden.

Sie sollten sowohl ABS als auch Ihr Projekt mit dem neuesten verfügbaren SDK kompilieren (derzeit, 4.1). Ihr Manifest sollte eine targetSdkVersion so hoch wie möglich haben (idealerweise passend zu Ihrem Kompilierungs-SDK) und Ihre minSdkVersion sollte auf die niedrigste Version eingestellt sein, die Sie unterstützen.

Lint ist teilweise mit IntelliJ IDEA integriert und auch als Befehlszeilenwerkzeug verfügbar.

1

Sie setzen Ihr SDK temporär auf die verschiedenen unteren SDKs und debuggen damit. Dein finaler Build ist dann mit dem neuesten SDK.

+0

Dies wäre der * manuelle * Ansatz. –

+0

Oh ich dachte, du meintest manuell, indem du jeden Anruf nachschaust und nachprüfst. Ich glaube nicht, dass es automatisch das macht, was du willst. Das ist eine gute Idee für ein zukünftiges ADT-Update, aber ich glaube nicht, dass es momentan verfügbar ist. Aber ich bin mir nicht sicher! –

0

Legen Sie ein Build-Ziel fest, das dem in Ihrem Manifest erwähnten ähnlich ist.

+0

Wie schon von @GeeksOnHugs ... –

+0

erwähnt, ist die Einstellung eines Build-Ziels anders als das Setzen einer SDK-Zielversion. Es erfordert auch keine Änderungen im Manifest. Ich weiß zumindest in Eclipse ändern das Build-Ziel wird alle Fehlermeldungen beheben. Sie möchten wahrscheinlich auch eine niedrigere minSdkVersion sowie Ihre targetSdkVersion einschließen, so dass sie aus der minSdkVersion im Play Store verfügbar ist. – Stevy888

0

Wie immer sollten Sie targetSdk auf das Maximum setzen, das sowohl im Manifest als auch im Projekt verfügbar ist.Eigenschaftendatei (wie von Google auf einem ihrer Videos empfohlen), so dass das ADT & SDK in der Lage wäre, den ADK entsprechend zu optimieren.

Setzen Sie den minSdk auf den, von dem Sie Ihre App unterstützen möchten, und lassen Sie Lint sagen, ob es Probleme gibt, falls Sie zu neue Funktionen verwenden.

Verwandte Themen