Was ist der Unterschied zwischen compileSdkVersion und targetSdkVersion?
Ich habe mir die Dokumentation für das bauen mit Gradle, aber ich bin mir noch nicht sicher, was der Unterschied zwischen compileSdkVersion
und targetSdkVersion
ist.
Alle es sagt, ist:
Den
compileSdkVersion
- Eigenschaft gibt die Zusammenstellung Ziel.
Gut, was ist die "Zusammenstellung target"?
Sehe ich zwei mögliche Wege, diese zu interpretieren:
compileSdkVersion
ist die version des Compilers, die in den Aufbau der app, währendtargetSdkVersion
ist die "API-Ebene, dass der Antrag Ziele". (Wenn dies der Fall ist, würde ich davon ausgehencompileSdkVersion
muss größer als oder gleich dertargetSdkVersion
?- Sie bedeuten die gleiche Sache. "compilation target" == "API-Ebene, dass der Antrag Ziele"
- Etwas anderes?
Sehe ich, dass diese Frage wurde vorher gefragt, aber die eine Antwort, die nur Zitate der doc, was ist mir unklar.
Mehr details auf: Kommissionierung Ihr compileSdkVersion, minSdkVersion und targetSdkVersion
targetSdkVersion ist das, was auf deinem Gerät installiert ist. Also, wenn Sie Ihre Geräte laufen niedriger als Oreo, dann nicht Ziel 27.
targetSdkVersion ist das, was auf deinem Gerät installiert ist. Also, wenn Sie Ihre Geräte laufen niedriger als Oreo, dann nicht Ziel 27.
InformationsquelleAutor coder123 | 2014-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
compileSdkVersion
Den
compileSdkVersion
ist die version der API die app wird kompiliert. Das heißt, Sie können Android-API-Funktionen in dieser version der API (sowie alle vorherigen Versionen, natürlich). Wenn Sie versuchen, und verwenden Sie API-16 features abercompileSdkVersion
bis 15, erhalten Sie einen Kompilierungsfehler. Wenn SiecompileSdkVersion
zu 16 können Sie trotzdem die app über eine API 15 Gerät so lange, wie Sie Ihre app Ausführungspfade versuchen Sie nicht, rufen Sie spezifische APIs API 16.targetSdkVersion
Den
targetSdkVersion
hat nichts zu tun mit, wie Ihre Anwendung kompiliert wird oder welche APIs Sie nutzen können. DietargetSdkVersion
zeigen soll, dass Sie getestet haben, Ihre app auf (vermutlich bis zu und einschließlich der version, die Sie angeben. Das ist mehr wie eine Zertifizierungs-oder Abmelden, geben Sie das Android-OS als einen Hinweis, wie es sollte in der Lage, Ihre app in Bezug auf die OS-Funktionen.Beispielsweise als die Dokumentation Staaten:
Android OS, zur Laufzeit, kann sich ändern, wie die app ist stilisiert oder anderweitig ausgeführt, im Rahmen der OS basiert auf diesem Wert. Es gibt ein paar andere bekannte Beispiele, die beeinflusst werden durch diesen Wert und diese Liste ist wahrscheinlich nur im Laufe der Zeit erhöhen.
Für alle praktischen Zwecke, die meisten apps gehen zu wollen, zu setzen
targetSdkVersion
auf die jeweils neueste freigegebene version der API. Dies wird sicherstellen, dass Ihre app aussieht, so gut wie möglich auf die aktuellste Android-Geräte. Wenn Sie nicht angeben dertargetSdkVersion
ist, wird standardmäßig derminSdkVersion
.targetSdkVersion
sehr wahrscheinlich höher sein wird, alscompileSdkVersion
- und das zu Recht. Dies bedeutet, dass obwohl Sie entworfen, eine app zum Ziel-API 16, zum Beispiel, es läuft immer noch gut auf API-21 (Lollipop), und Sie sollten Ihre Bauch -targetSdkVersion
21 zu zeigen, ist es okay für das Android OS zu verwenden Lollipop-Stile, die existieren können, um Ihre app.Grundsätzlich, ich verstehe nicht, wie man Ziel könnte ein SDK höher als die der SDK haben Sie kompiliert wurden.
Ändern
compileSdkVersion
auf eine höhere version würde bedeuten, Sie wollen verwenden Sie einige neue APIs, die nur in dieser bestimmten Version. Wenn Sie nicht Vorhaben, mit jedem Lollipop-spezifische features in Ihrer app, dann gibt es eigentlich (normalerweise) keinen Grund, jecompileSdkVersion
bis 21. Jedoch, Ihre app wird wahrscheinlich laufen gerade fein auf API-21-ist, so ändern SietargetSdkVersion
an Ihre app - läuft wie Sie erwarten, dass (target), auf API-21, aber Sie sind nicht mit jedem-spezifische APIs 21 (kompilieren) und damit IhrecompileSdkVersion
übernachten auf 15 in diesem Beispiel.Eine Warnung wird gemeldet, wenn ich das in Android studio. Ich habe "compileSdkVersion 17" und "targetSdkVersion 22" und es sagt mir "targetSdkVersion sollte nicht höher sein als compileSdkVersion". Oh, nur es geändert und jetzt ist es mir über den targetSdkVersion ist nicht der jüngste 22 und der Kompatibilitätsmodus könnte kick in. Seufz.
Diese Antwort widerspricht dem, was die Android-Studio sagt. targetSdkVersion Angelegenheiten, und es sollte weniger als oder gleich compileSdkVersion
InformationsquelleAutor Jeff Mixon
Als oneliner-guide:
Ideal:
Lesen Sie mehr von diesen tollen Beitrag von Ian Lake
minSdkVersion
bedeutet die niedrigste Geräte-api-Ebene-appcan
laufen? Vermutlich, weil es verwendet bestimmte API ' s zur Verfügung, vonminSdkVersion
ab?ja. Zum Beispiel, wenn
minSdkVersion
ist 15 (das ist ICS 4.0.3) Geräte mit API 14 (das ist ICS 4.0), sollten Sie nicht in der Lage sein, um die app zu installieren. Und zumindest für jetzt, die app läuft auch auf 15, 16, 17, 18, 19, (20 aber das ist für die alten wear os), 21, 22, 23, 24, 25, 26, 27, 28, und so weiter in der Zukunft (wahrscheinlich)InformationsquelleAutor Jimmy Kane
Den
compileSdkVersion
sollte neueste stabile version.Die
targetSdkVersion
sollte vollständig getestet und weniger oder gleichcompileSdkVersion
.Ich denke, der Punkt ist, dass die Letzte version ist abwärtskompatibel, so die neueste API-version können Sie "Verhalten" sich wie die älteren, wenn Sie den
targetSdkVersion
zu einer geringeren. Also dietargetSdkVersion
sollten die sein, die Sie getestet haben und einmal genau wissen, Verhalten, können und werden <= der Letzte stabile.Ich denke, dass Ihre Aussage '
compileSdkVersion
sollte neueste stabile version' mit dem Suffix ', von denen Sie mit API-Funktionen'. Es macht keinen Sinn, gegen den Sie kompilieren API-27 (heute ist die Letzte stabile API), wenn Sie nur mit niedrigen API-version bietet. Jedoch, die neueste stabile version könnte auch einige features, die werden automatisch besser, z.B. verbesserte Sicherheit oder die effiziente Zusammenstellung mit rückwärts-Kompatibilität. Daher ist es ratsam, die aktuelle oder zumindest eine neuere stabile version, aber es 'sollte [nicht]' die neueste version von per se.InformationsquelleAutor androidwifi
Spät, um das Spiel.. und es gibt einige großartige Antworten-- im wesentlichen, dass die
compileSdkVersion
ist die version der API die app wird kompiliert, während dietargetSdkVersion
gibt die version, dass die app gegen getestet.Möchte ich ergänzen die Antworten mit den folgenden Noten:
Dass
targetSdkVersion
beeinflusst die Art und Weise, in der die Berechtigungen angefordert werden:targetSdkVersion
ist 23 oder höher, die app fordert Berechtigungen vom Benutzer zur Laufzeit.targetSdkVersion
ist 22 oder niedriger, das system fragt den Benutzer, um die Berechtigungen zu erteilen, wenn der Benutzer installiert die app.Wenn die
compileSdkVersion
höher ist als die version, die erklärt, dass die apptargetSdkVersion
werden, kann das system ermöglichen die Kompatibilität von Verhaltensweisen, um sicherzustellen, dass Ihre app weiter zu arbeiten, wie Sie es erwarten. (ref)Mit jedem neuen Android-release...
targetSdkVersion
sollte erhöht werden, entsprechen den neuesten API-Ebene, dann gründlich testen Sie Ihre Anwendung auf die entsprechende Plattform-versioncompileSdkVersion
, auf der anderen Seite, muss nicht geändert werden, es sei denn, Sie sind das hinzufügen von features, die exklusiv auf der neuen Plattform-versiontargetSdkVersion
Häufig (zunächst) weniger als diecompileSdkVersion
es ist nicht ungewöhnlich, um zu sehen, eine gut gepflegte/etablierte app mittargetSdkVersion > compileSdkVersion
targetSdkVersion
sehen Sie möglicherweise die Kompatibilität von Verhaltensweisen. Ich glaube nicht, dass es hat etwas zu tun mit dercompileSdkVersion
.InformationsquelleAutor Austin D
The CompileSdkVersion
ist die version der SDK-Plattform Sie Ihre app funktioniert für die Kompilierung, etc. WÄHREND der Entwicklung (Sie sollten immer die neueste Version), Diese ist im Lieferumfang der API-version, die Sie verwendenSehen Sie diese in Ihrer
build.gradle
Datei:targetSdkVersion:
enthält die info-app Ihre Schiffe mit NACH die Entwicklung der app store, der es ermöglichtTARGET the SPECIFIED version of the Android platform
. Je nach Funktionsumfang Ihrer app können die Ziel-API-Versionen niedriger als der aktuelle.Zum Beispiel, Sie können die Ziel-API-18 auch wenn die aktuelle version 23.Nehmen Sie einen guten Blick auf dieses offizielle Google Seite.
InformationsquelleAutor ojonugwa ochalifu
Ich sehe eine Menge Differenzen über
compiledSdkVersion
in vorherigen Antworten, also werde ich versuchen zu klären, hier ein bisschen, folgende android-web-Seite.Ein - Was Android sagt
Laut https://developer.android.com/guide/topics/manifest/uses-sdk-element.html:
So, das wäre das richtige, um nach Android:
compiledSdkVersion = minSdkVersion <= targetSdkVersion
B -, Was andere auch sagen
Einige Leute es vorziehen, verwenden Sie immer die höchste compiledSkdVersion zur Verfügung. Es ist, weil Sie sich auf code-Hinweise, um zu überprüfen, ob Sie mit der neueren API-Funktionen als minSdkVersion, also entweder ändern Sie den code, nicht verwenden oder die überprüfung der Benutzer-API-version zur Laufzeit bedingt zu verwenden, Sie mit fallbacks für ältere API-Versionen.
Hinweise zu veraltet benutzt, würde auch erscheinen, im code, so dass Sie wissen, dass etwas veraltet ist, in den neueren API-Ebenen, so dass Sie entsprechend reagieren können, wenn Sie möchten.
So, das wäre das richtige, um nach anderen:
minSdkVersion <= targetSdkVersion <= compiledSdkVersion (highest possible)
, Was zu tun ist?
Es hängt von Ihnen und Ihrer app.
Wenn Sie planen, bieten Ihnen verschiedene API-Funktionen gemäß der API-level der Benutzer zur Laufzeit, verwenden Sie die option B. Sie erhalten Hinweise über die Funktionen, die Sie verwenden, während Codierung. Nur stellen Sie sicher nie verwenden neuere API-Funktionen als minSdkVersion ohne überprüfung der Benutzer-API-Ebene zur Laufzeit, sonst wird Ihre app zum Absturz. Dieser Ansatz hat auch den Vorteil, zu lernen, was ist neu und was ist alt, während Codierung.
Wenn Sie bereits wissen, was neu oder alt, und Sie entwickeln eine Zeit-app, die für sicher, wird nicht aktualisiert werden, oder Sie sind sicher, dass Sie nicht gehen, um Ihnen neue API-Funktionen bedingt ist, dann verwenden Sie die option A. Sie nicht erhalten Mühe mit veralteten Tipps und Sie werden nie in der Lage sein, um die Verwendung neuer API-Funktionen, auch wenn Sie versucht, es zu tun.
Guter Punkt @Caltor. Ich wünschte, Sie würden-update, das Dokument zu klären, den Unterschied. Die
<uses-sdk>
Dokumentation ist extrem vage und mehrdeutig.InformationsquelleAutor CGodo
Meine 2 Cent: Kompilieren gegen eine beliebige version des SDK, aber aufpassen nicht zu nennen, alle APIs, die Ihre "minimum SDK version" nicht unterstützt. Das bedeutet, dass Sie "könnte", gegen den Sie kompilieren Sie die neueste version des SDK.
Als für "target-version", es bezieht sich einfach auf das, was Sie geplant, um den Gegner in den ersten Platz haben und eventuell gegen getestet. Wenn Sie nicht getan haben, die due diligence, dann ist dies der Weg, um zu informieren Android, die es braucht, um einige weitere Tests ausführen, bevor er setzt Sie Ihr können sagen, "Lollipop" gezielte app auf "Oreo".
Also die "Ziel-version" ist offensichtlich nicht niedriger als Ihr "minimum SDK version" aber es kann nicht höher sein, als deine "kompilierte version".
InformationsquelleAutor Prabhu M
Nicht die Antwort auf Ihre Fragen, da gibt es schon eine Menge ausführliche Antworten, aber es ist erwähnenswert, dass im Gegensatz zu Android Dokumentation Android Studio ist was für die gleiche version für
compileSDKVersion
undtargetSDKVersion
.InformationsquelleAutor sshturma
Einstellungen der Anwendung von einem Android-Projekt-Eigenschaften in Visual Studio 2017 (15.8.5) scheint zusammen haben, oder so:
InformationsquelleAutor samis
compiledSdkVersion==> welche version des SDK sollte kompilieren Sie Ihre code zu bytecode(verwendet in development environment) zeigen Sie: es ist besser, verwenden Sie die Letzte version des SDK.
minSdkVersion==> dieser Artikel verwendet für die installation von APK - (verwendet in der Produktion). Zum Beispiel:
InformationsquelleAutor M.Namjo