748 Stimmen

Was ist der Unterschied zwischen compileSdkVersion und targetSdkVersion?

Ich habe mir die Dokumentation zum Erstellen mit Gradle angesehen, aber ich bin immer noch nicht sicher, was der Unterschied zwischen compileSdkVersion und targetSdkVersion ist.

Alles, was es sagt, ist:

Die `compileSdkVersion`-Eigenschaft gibt das Kompilierungsziel an.

Nun, was ist das "Kompilierungsziel"?

Ich sehe zwei mögliche Interpretationen:

  1. compileSdkVersion ist die Version des Compilers, der zum Erstellen der App verwendet wird, während targetSdkVersion die "API-Ebene, auf die die Anwendung abzielt" ist. (Wenn dies der Fall wäre, würde ich davon ausgehen, dass compileSdkVersion größer als oder gleich targetSdkVersion sein müsste?
  2. Sie bedeuten dasselbe. "Kompilierungsziel" == "die API-Ebene, auf die die Anwendung abzielt"
  3. Etwas anderes?

Ich sehe, dass diese Frage bereits gestellt wurde, aber die eine Antwort zitiert einfach die Dokumentation, die für mich unklar ist.

2voto

MashukKhan Punkte 1834

compileSdkVersion

compileSdkVersion gibt die Version des Android SDK an, gegen das dein Code kompiliert wird. Dies bedeutet, dass deine App alle APIs verwenden kann, die in der angegebenen Version und in früheren Versionen enthalten sind.

Zum Beispiel, wenn du die compileSdkVersion auf 30 setzt, bedeutet das, dass deine App alle APIs verwenden kann, die bis Version 30 eingeführt wurden. Wenn du zum Beispiel die Camera2-API verwenden möchtest, die in Android 5.0 (API Level 21) und höher eingeführt wurde, und du deine compileSdkVersion auf 30 gesetzt hast, kann deine App diese API problemlos verwenden. Wenn du jedoch versuchst, eine API zu verwenden, die in Android 31 eingeführt wurde (die noch nicht veröffentlicht wurde), erhältst du einen Kompilierungsfehler, da diese API noch nicht in der von dir festgelegten compileSdkVersion verfügbar ist.

targetSdkVersion

targetSdkVersion Dies ist die Version des Android SDK, für die die App ausgelegt ist. Es gibt das API-Level an, gegen das die App getestet wurde und auf dem sie laufen soll, und zeigt auch das Maß an Kompatibilität an, das die App mit neueren Versionen von Android bietet.

Zum Beispiel, wenn du die targetSdkVersion auf 30 setzt, gibst du an, dass deine App für Geräte ausgelegt ist, die Android 30 oder höher ausführen. Dies bedeutet, dass du deine App gegen die in Version 30 eingeführten APIs getestet hast und sichergestellt hast, dass deine App auf diesen Geräten korrekt funktioniert. Dies bedeutet jedoch auch, dass deine App möglicherweise nicht von den neuen Funktionen und APIs profitiert, die in höheren Versionen von Android eingeführt wurden, es sei denn, du entwickelst explizit dafür.

Zusammenfassung

Zusammenfassend bestimmt die compileSdkVersion den Satz von APIs, der während des Erstellungsprozesses verwendet werden kann, während die targetSdkVersion das API-Level angibt, für das die App ausgelegt ist und das Maß an Kompatibilität mit neueren Versionen von Android anzeigt.

Idealerweise sollten die compileSdkVersion und targetSdkVersion gleich sein und beide auf das neueste SDK verweisen. Aber natürlich erst, nachdem du getestet hast, dass jede Änderung, die in dieser Version eingeführt wurde, reibungslos mit deiner App funktioniert!

1voto

samus Punkte 5916

Die Anwendungseinstellungen der Eigenschaften eines Android-Projekts in Visual Studio 2017 (15.8.5) haben sie kombiniert:

Hier Bildbeschreibung eingeben

1voto

kush Punkte 398

Schnelle Zusammenfassung:

Für minSDKversion, siehe neuesten Eintrag im Twitter-Handle: https://twitter.com/minSdkVersion

TargetSDKversion: siehe neuesten Eintrag im Twitter-Handle: https://twitter.com/targtSdkVersion oder verwende die neueste API-Ebene, wie in der Entwicklung https://developer.android.com/guide/topics/manifest/uses-sdk-element.html angegeben

Kompilierte Version: mache sie gleich wie TargetSDKversion

maxSdkVersion: Der Rat von Android ist, dies nicht festzulegen, da Sie nicht wollen, dass Ihre App auf zukünftigen Android-Versionen nicht funktioniert

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X