2012-03-27 3 views
6

Meine Frage tauchte eine sehr ähnliche Frage auf, this one. Aber die akzeptierte Antwort (die einzige) weist auf eine andere Frage hin, this one, die die ursprüngliche Frage nicht wirklich beantwortet.Welchen Einfluss hat das Android-Build-Ziel auf die finale APK?

Die Android-Dokumentation heißt es:

Der Build-Ziel gibt an, welche Android-Plattform Sie Ihre Anwendung gegen gebaut möchten.

Aber was bedeutet das wirklich?

So wie ich es sehe, kann ich die minSdkVersion=4 und targetSdkVersion=10 haben, aber das Build-Ziel auf API Level 4 setzen. Was wird passieren? Eclipse geht davon aus, dass ich für API Level 4 entwickle und jede Methode, Konstante oder was auch immer auf API Levels über 4 definiert ist, steht mir nicht zur Verfügung. Wenn ich versuche, sie zu verwenden, wird die Anwendung nicht kompiliert. Ich bin mir dessen bewusst.

Aber lassen Sie mich es anders auszudrücken ...

Lasst uns sagen, dass ich nur minSdkVersion=4 gesetzt haben, targetSdkVersionist nicht definiert. Ich bin auch nicht mit jede Methode oder Konstante nur auf API-Levels über 4. In dieser Situation, ist es wirklich wichtig, das Build-Ziel, das ich wähle? Wird es Auswirkungen auf die finale APK haben?

Antwort

6

Build-Ziel

Build-Target die API-Ebene Eclipse/IntelliJ/welche IDE auch immer Sie verwenden, baut dagegen auf. Diese wird einfach vom IDE/Build-System verwendet, um zu wissen, welche APIs Ihnen angeboten werden, . Wenn Sie gegen API-Ebene bauen 14, wird die Anwendung noch sein Lage 7 auf API-Ebene ausgeführt werden, vorausgesetzt, Sie rufen keine APIs, die nicht auf API-Ebene sind 7.

ich meist das Build-Ziel gesetzt zu dem gleichen wie Android: targetSdkVersion, obwohl dies nicht erforderlich ist.

Quelle: http://simonvt.net/2012/02/07/what-api-level-should-i-target/

2

Wenn Sie ein höheres Build-Ziel verwenden, können Sie Code schreiben, der mit früheren Versionen funktioniert, z. B. durch Reflektion. Wenn Sie auf nur API 4 beschränkt sein möchten, machen Sie sich keine Sorgen um das Build-Ziel.

Ein Beispiel für die früheren api Ebenen Targeting, wenn für eine höhere Kompilieren Sie diese Frage aussehen:

Android: how to code depending on the version of the API?

+0

Das noch nicht wirklich meine Frage beantworten. –

+0

Ich erwähnte, dass wenn Sie nur auf API 4 beschränkt werden wollen, kein Ziel in Ordnung ist. Wenn Sie jedoch ein höheres Build-Ziel auswählen und keine der neuen Features verwenden, kann es möglicherweise mit einer höheren API arbeiten. Verwenden Sie diese Funktionen, aber da Sie sie nicht verwenden, spielt es keine Rolle. Ich erwarte, dass es im Byte-Code einen Unterschied gibt, so dass er eine andere API verwenden kann. –

2

The way I see it, I can have the minSdkVersion=4 and targetSdkVersion=10 but set the build target to API Level 4. What will happen? Eclipse assumes I'm developing for API Level 4 and any method, constant or whatever defined on API Levels above 4 will not be available to me. If I try to use them, the application will not compile.

Wenn Sie das Build-Ziel auf API-Ebene 4, Eclipse lässt Sie keine Methoden höher verwenden, die Sie höher verwenden, da es streng API-Level 4 verwendet. Wenn Sie das Build-Ziel jedoch auf eine höhere API-Ebene, in Ihrem Fall API-Ebene 10, setzen, ist Ihr APK verfügbar Telefone von API-Ebene 4 bis 10.

Die Antwort der zweiten Frage beantwortet Ihre Frage, das ist das Android-Build-Ziel. Sowohl minSdkVersion als auch targetSdkVersion beeinflussen die Anzahl der Benutzer, die Ihre Anwendung verwenden können.

EDIT:

Da Sie nicht definieren targetSdkVersion gehen und Sie sind keine Funktionen verwenden, die über API-Ebene 4, die targetSdkVersion die gleiche wie minSdkVersion sein. Welches Buildziel auch immer gewählt wird, wird automatisch festgelegt.Es ist nicht wirklich wichtig, die bauen Ziel Sie wählen, wenn es unter API-Ebene 4

Von Android Dokumentation von targetSdkVersion ist:

An integer designating the API Level that the application targets. If not set, the default value equals that given to minSdkVersion. This attribute informs the system that you have tested against the target version and the system should not enable any compatibility behaviors to maintain your app's forward-compatibility with the target version. The application is still able to run on older versions (down to minSdkVersion).

+1

Nichts davon beantwortet meine Frage, weil meine Frage nicht die Manifest-Parameter betrifft, auf die sich jeder zu konzentrieren scheint. Ich weiß, was sie tun und wie sie arbeiten. Das will ich nicht wissen. –

+0

Die Antwort von Steve Haley zeigt, wie es funktioniert und gab ein Beispiel. Die Community denkt, dass es die richtige Antwort auf die zweite Frage ist, auf die ich mich beziehe. Entschuldigung, wenn ich dich irreführe. – androidnoob

+1

Steve Haleys Frage gibt vollständig an, wie die Attribute minSdk/targetSdk funktionieren. Aber meine Frage ** ist nicht über diese. –

Verwandte Themen