(Übertragung) Die Beziehung zwischen compileSdkVersion, targetSdkVersion und minSdkVersion

**

compileSdkVersion, targetSdkVersion und minSdkVersion
**

*compileSdkVersion
*Definiert, welche Android SDK-Version für die Anwendungskompilierung ausgewählt wird. Normalerweise wird der Wert des Attributs „compileSDKVersion“ auf die neueste API-Version gesetzt, zum Beispiel: 25. Das Ändern des Attributwerts „compileSDKVersion“ hat keinen Einfluss auf das Laufverhalten des Android-Systems Wenn Sie beispielsweise den Attributwert auf 25 setzen, ist der Attributwert targetSdkVersion 23 und der Code lautet wie folgt:

compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "cn.teachcourse.demos"
    minSdkVersion 11
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}


Die entwickelte Anwendung läuft auf dem Android 7.0-System und wird nicht mit den neuen Verhaltensweisen von Android 7.0 ausgeführt. Die targetSDKVersion bestimmt immer noch das Verhalten des Android-Systems. Welchen Nutzen hat compileSDKVersion also? Wählen Sie die neueste API-Version aus, überprüfen Sie Codefehler und Warnungen während der Kompilierung und fordern Sie Entwickler auf, Änderungen und Optimierungen vorzunehmen, da in einem Android-Projekt normalerweise eine Supportbibliothek eines Drittanbieters eingeführt wird und die Supportbibliothek Version 23.1.1 verwendet, das Attribut von compileSdkVersion Der Wert beträgt mindestens 23.0.0, und die Veröffentlichung der neuen Version der Unterstützungsbibliothek folgt der entsprechenden Android-Systemplattform, die besser kompatibel sein kann.

minSdkVersion
definiert die von der Anwendung unterstützte Mindest-API-Version, die Mindestversion ist auf API 11 und die Zielversion auf API 24 festgelegt. Wenn die Anwendung dann die von API 14 bereitgestellten Methoden aufruft, erinnern die Entwicklungstools Android Studio oder Eclipse die Entwickler daran Um auf eine undefinierte Methode zu verweisen, muss bei Verwendung dieser Methode minSdkVersion auf API 14 oder höher gesetzt werden, wie in der folgenden Abbildung dargestellt:

Wenn wir mit dem obigen Code fortfahren, ist das Ergebnis, dass Systeme größer oder gleich Android 4.0 normal ausgeführt werden können und Systeme unter Android 4.0 abstürzen, wenn sie versuchen, zur Laufzeit auf nicht verfügbare APIs zuzugreifen.

targetSdkVersion
ist die Zielversion der Softwareentwicklung. Beim Erstellen jedes Android-Projekts müssen Sie targetSdkVersion und minSdkVersion auswählen. Ein Attributwert von targetSdkVersion gibt an, welche API-Version für das erstellte Android-Projekt verwendet wird. Eine API-Version wird durch eine ganze Zahl dargestellt der vollständige Name der API Es handelt sich um die Anwendungsprogrammierschnittstelle, also die Anwendungsprogrammierschnittstelle. Es gibt einen Unterschied zwischen der Programmierschnittstelle, die API 19 entspricht, und der durch API 23 definierten Programmierschnittstelle, da der Attributwert von targetSdkVersion dargestellt wird durch eine Ganzzahl, die leicht zu merken und die Größe zwischen ihnen zu vergleichen ist. Die API-Programmierschnittstelle der Version kann mit der API-Programmierschnittstelle der niedrigeren Version kompatibel sein und umgekehrt.

Es ist notwendig, die Beziehung zwischen Android 7.0 und API 24 zu unterscheiden. Android 7.0 definiert die Version des Mobiltelefonsystems. Die Anwendungsprogrammschnittstelle dieser Systemversion ist als API 24 definiert. Wenn der Entwickler Android 7.0 in der Entwicklung verwenden möchte APP Zu den vom System bereitgestellten Funktionen gehören: Unterstützung mehrerer Fenster, Änderungen der Benachrichtigungsanzeige, JIT/AOT-Kompilierung, schneller Anwendungsinstallationspfad usw. Daher müssen Anfänger beim Erstellen eines Android-Projekts die API 24-Anwendungsprogrammierschnittstelle wählen.

Auf diese Weise können wir erkennen, dass das Größenverhältnis der Versionsnummer wie folgt lautet: compileSdkVersion>targetSdkVersion>minSdkVersion

CompileSdkVersion bedeutet, dass beim Kompilieren die API-Spezifikation für Codeprüfungen und Warnungen verwendet, aber nicht in die APK kompiliert wird.
targetSdkVersion stellt die Zielversion dar und die Version der API wird während der Kompilierung in die APK kompiliert.
minSdkVersion stellt die Mindestversion dar, die mit der durch diesen Parameter während der Kompilierung angegebenen Mindestversions-API kompatibel ist.

Tatsächlich besteht die Kompatibilität in Android darin, dass jede API-Schnittstelle kompatibel ist, indem die Version des Systems beurteilt wird. Der häufigste Prozess zum Erstellen einer Ansicht besteht beispielsweise darin, vor dem Erstellen die Version des aktuell ausgeführten Android-Systems zu beurteilen und dann das aufzurufen entsprechende API-Schnittstelle. erstellen. Das Versionsproblem von targetSdkVersion und minSdkVersion ist gelöst. Dies bedeutet, dass beim Packen die API zwischen der API-Schnittstelle mit der höchsten Version und der niedrigsten Version in die APK gepackt wird. Wenn sie in einem Android-System außerhalb des Gültigkeitsbereichs installiert wird, dann das laufende Programm darf nicht gefunden werden. Methodenfehler ist aufgetreten. Und wenn die targetSdkVersion-Version niedriger als 23 ist, aber auf einem System über 6.0 installiert ist, ist die API für die dynamische Berechtigungsanwendung nicht in der APK gepackt, daher ist es selbstverständlich, dem Berechtigungsprozess der niedrigeren Version zu folgen, und Sie kann die Erlaubnis ohne dynamische Anwendung erhalten. Der Grund, warum das Android-System mit der Version von targetSdkVersion kompatibel ist, die niedriger ist als das eigene System, liegt auch daran, dass der Quellcode eine Versionsbeurteilung des API-Schnittstellenaufrufs zur Abwärtskompatibilität vorgenommen hat.

Die targetSDKVersion
bedeutet einfach die Systemversion, an die sich Ihre App anpassen kann. Das bedeutet, dass Ihre App vollständig verarbeitet und auf Aufwärtskompatibilität auf dieser Version des Telefons getestet wurde. Tatsächlich machen wir so etwas oft beim Schreiben von Code, nämlich if(Build.VERSION.SDK_INT >= 23) { … } Dies ist das typischste Beispiel für die Kompatibilitätsverarbeitung. Wenn Ihr Ziel höher ist, erhalten Sie beim Aufrufen der vom System bereitgestellten API tatsächlich eine andere Verarbeitung, und sogar einige neue APIs sind nur im neuen System verfügbar.

Normale Berechtigung für Android 6.0 und gefährliche Berechtigung
Normale Berechtigung: Schreiben Sie in die XML-Datei, dann erhält die App diese Berechtigungen standardmäßig, wenn die App installiert wird. Selbst auf dem Mobiltelefon mit dem Android 6.0-System kann der Benutzer diese normalen Berechtigungen nicht dynamisch aufheben ist das gleiche wie das vorherige Berechtigungssystem, unverändert.

Gefährliche Berechtigung: Sie muss noch in die XML-Datei geschrieben werden, aber bei der Installation der App wird die Berechtigung in die folgenden Situationen unterteilt:

1. targetSDKVersion < 23 & API (Mobiles System) < 6.0: Berechtigungen werden standardmäßig während der Installation abgerufen, und Benutzer können Berechtigungen nach der Installation der App nicht widerrufen.
3. targetSDKVersion < 23 & API (Mobiltelefonsystem) >= 6.0: Die Autorisierung wird standardmäßig während der Installation gewährt, aber der Benutzer kann die Autorisierung dynamisch abbrechen, nachdem die Installation der App abgeschlossen ist (das Mobiltelefon zeigt eine Erinnerung an, wenn). Abbrechen, um dem Benutzer mitzuteilen, dass es sich um eine Anwendung handelt, die für eine alte Version des Telefons entwickelt wurde, sodass Benutzer mit Vorsicht vorgehen können.

2. targetSDKVersion >= 23 & API (Mobiltelefonsystem) < 6.0: Berechtigungen werden standardmäßig während der Installation eingeholt, und Benutzer können Berechtigungen nach der Installation der App nicht widerrufen.

4. targetSDKVersion >= 23 & API (Mobiltelefonsystem) >= 6.0: Während der Installation wird keine Berechtigung eingeholt, und Sie können zur Laufzeit eine Berechtigung vom Benutzer beantragen. Nachdem der Benutzer die Autorisierung vorgenommen hat, kann er die Autorisierung immer noch in der Einstellungsoberfläche abbrechen. Nachdem der Benutzer die Einstellungsoberfläche aktiv abgebrochen hat, kann es während der Ausführung der App zu einem Absturz kommen.

Geben Sie ein weiteres Beispiel, um die Beziehung zwischen den dreien zu veranschaulichen. Jetzt gibt es ein Klassensymbol, das in der API-Version 23 zum Android-Frame-Quellcode hinzugefügt wurde. Wenn CompileSdkVersion = 28, TargetSdkVersion = 23, MinSdkVersion = 16, ist die Kompilierung vorhanden Kein Problem, da meine targetSdkVersion-Version die Icon-Klasse enthält. Wenn ich sie auf 22 setze, wird ein Fehler gemeldet, der besagt, dass diese Klasse nicht gefunden werden kann, da diese Klasse nicht im android.jar-Paket vorhanden ist. Wenn ich sie setze die targetSdkVersion auf 23, und wenn die gepackte APK auf einem 5.0-Mobiltelefon installiert wird, stürzt das Programm ab. Der Grund dafür ist, dass Android. Es wird von außen in die APK gepackt und nicht in die APK gepackt , sodass beim Aufrufen der Icon-Klasse durch die APK der Frame-Layer-Code verwendet wird, der mit dem Android-Telefon geliefert wird. Das Symbol wird in api23 eingeführt, und das 5.0-Telefon verfügt natürlich nicht darüber. Es wird natürlich abstürzen.
 

Acho que você gosta

Origin blog.csdn.net/duyiqun/article/details/120759673
Recomendado
Clasificación