Beiträge

Entwickeln für Android 11 & 12 mit Delphi 11 Alexandria

Android 11 wird auf den meisten neuen Telefonen ausgeliefert, aber Android 12 wurde überall auf Pixel-Geräten eingeführt. Nehmen Sie an diesem Webinar teil, um zu sehen, was sich in diesen neuesten Versionen von Android geändert hat, und sehen Sie sich einige Best Practices für die Android-Entwicklung mit Tipps für die Ausrichtung auf die neuesten Versionen des beliebtesten Betriebssystems an.

Sehen Sie sich Google Slides an oder laden Sie sie herunter

Table of Contents

Marktanteil von Desktop-, Mobil- und Tablet-Betriebssystemen weltweit

android-01-2631846-2

https://gs.statcounter.com/os-market-share/desktop-mobile-tablet/worldwide/#monthly-200901-202201

Marktanteil der Mobilfunkhersteller weltweit (Januar 2020 – Jan 2022)

android-02-1282266-2

https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202

Marktanteil der Mobilfunkhersteller weltweit (Januar 2022)

android-03-5514738-2

https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202

Android vs. iOS Marktanteil weltweit (Januar 2020 – Jan 2022)

android-04-9694559-2

https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202

Marktanteil der mobilen Android-Version weltweit (Januar 2020 – Jan 2022)

android-05-3367558-2

https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201

Mobile Android-Version – Marktanteil weltweit (Januar 2022)

android-06-3847722-2

Android 11 ist aktuell führend ( Versionen 9 bis 11 machen 76,4 % aus) .

  • Android 12 wurde am 4. Oktober 2021 veröffentlicht
  • Android 11 wurde am 8. September 2020 veröffentlicht
  • Android 10 wurde am 3. September 2019 veröffentlicht
  • Android 9 wurde am 6. August 2018 veröffentlicht
  • Android 12 = API 31
  • Android 11 = API 30
  • Android 10 = API 29
  • Android 9 = API 28 (Kuchen)

https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201

Sicherheits- und Leistungsanforderungen für Android Play

  • Jedes Jahr wird die targetSdkVersion-Anforderung erweitert. Innerhalb eines Jahres nach jedem Android
  • Release müssen neue Apps und App-Updates auf die aktualisierte API-Ebene oder höher ausgerichtet sein.
  • November 2021:
    • Ziel-API-Ebene 30 (Android 11)
    • Veröffentlichen Sie im Android App Bundle-Format.
  • Erforderlich für die Google Play Console
  • Weitere Änderungen finden Sie im Leitfaden zur API-Migration: developer.android.com/distribute/best-practices/develop/target-sdk

Android-Änderungen in Delphi 11

android-14-1711493-2

*** – link

docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New

Unterstützung für Android 12?

android-07-6407549-2

Aktualisieren bestehender Android-Projekte

● Öffnen Sie ein Android-Projekt, das mit einer älteren Version erstellt wurde.
● Navigieren Sie zum andockbaren Fenster Projekte.
● Wählen Sie Android 32-Bit als aktive Zielplattform aus.
● Klicken Sie mit der rechten Maustaste auf den Knoten Bibliotheken.
● Klicken Sie auf Systemdateien auf Standard zurücksetzen.
● Anpassen mit Bibliotheken von Drittanbietern usw.
● Wiederholen für Android-64.

Aktualisieren Ihrer Android-Tools

  • Delphi installiert optional Android SDK 25.2.5 und Updates während der Installation
  • Fügen Sie ADB zu Ihrem Pfad hinzu:
    • C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491platform-tools
  • Fügen Sie SDKManager zu Ihrem Pfad hinzu:
    • C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491toolsbin
  • Laufen:
    • ADB-Kill-Server
    • SDKManager —aktualisieren
    • adb-Version
  • Wenn Sie eine Fehlermeldung erhalten: „.android/repositories.cfg konnte nicht geladen werden.“
    • Stellen Sie sicher, dass Sie einen .android-Ordner in Ihrem Benutzerverzeichnis haben
    • Erstellen Sie eine leere repositories.cfg-Datei
  • Neueste Version (ab Februar 2022)
    • Android Debug Bridge-Version 1.0.41
    • Version 32.0.0-8006631

Drahtloses Debugging

  • Hinzugefügt in Android 11 (API 30)
  • Wechseln Sie in den Entwicklermodus auf Android (tippen Sie sieben Mal auf „Build-Nummer“)
  • Aktivieren Sie das drahtlose Debugging
    • Entwickleroptionen -> Drahtloses Debuggen
    • Tippen Sie auf „Gerät mit Kopplungscode koppeln“
    • Aktivieren Sie „In diesem Netzwerk immer zulassen“ und drücken Sie „Zulassen“, wenn Sie dazu aufgefordert werden.
  • Von der Windows-CMD
    • adb Startserver
    • adb pair [ip]:[port] (aus dem Pairing-Dialog)
    • [Pairing-Code]
    • adb connect [ip]:[port] (vom drahtlosen Debugging-Bildschirm)
  • Aktualisieren Sie Geräte in IDE

Android-App-Bundle-Format

Ermöglicht Google Play, das Anwendungswartungsmodell Dynamic Delivery zu verwenden, um optimierte APKs für jedes Gerät zu generieren.

  • Projekt > Optionen > Erstellen > Delphi-Compiler > Kompilieren
  • Android App Bundle-Datei generieren (arm + arm64)

Nach einer erfolgreichen App-Bundle-Generierung zeigt die IDE ein Dialogfeld an, das den .aab-Dateipfad enthält.

Hinweis: Sie können ein App Bundle nicht ausführen oder debuggen. Um die Anwendung zu debuggen, müssen Sie das .APK-Paketformat verwenden

docwiki.embarcadero.com/RADStudio/en/Submitting_Your_Android_App_to_Google_Play#Android_App_Bundle_Support

Neues Android-Laufzeit-Berechtigungsmodell

  • Eingeführt in Android 6.0 (API 23) Marshmallow
    • Die Support-Bibliothek deckt frühere Android-Versionen ab
  • Das neue Modell optimiert den automatischen Aktualisierungsprozess
    • Berechtigungsgenehmigung wird bei der ersten Verwendung ausgelöst
    • Anstatt alle Berechtigungen bei der Installation zu genehmigen
  • Gibt Endbenutzern mehr Kontrolle über Berechtigungen
    • Einzelne Berechtigungen können pro App zugelassen oder verweigert und später geändert werden
  • Verwaltet durch neue Android-API-Methoden checkSelfPermission() & requestPermissions()

Weitere Informationen developer.android.com/training/permissions/requesting

Altes Genehmigungsdialogfeld

  • Während der Installation werden alle Berechtigungen akzeptiert
  • Der Benutzer kann einzelne Berechtigungen nicht verweigern
  • Alle im Manifest veröffentlichten Berechtigungen
  • Wenn sich die Berechtigungen ändern, müssen sie vor der Aktualisierung genehmigt werden

Neuer Genehmigungsdialog

  • Wenn Sie die individuelle Berechtigung zum ersten Mal anfordern, hat der Benutzer die Möglichkeit, sie zu verweigern oder zuzulassen
  • Wenn der Benutzer einmal ablehnt, kann der Benutzer verhindern, dass die App erneut fragt
  • Es ist wichtig, wann und wie Sie fragen (dazu später mehr)
  • Alle Berechtigungen sind weiterhin im Manifest veröffentlicht

Benutzer haben jetzt eine granulare Berechtigungskontrolle

android-10-7920934-2

Gefährlichvs.Normal Berechtigungen

  • Der Benutzer wird nicht aufgefordertNormalBerechtigungen
    • Beispiele: Internet, Vibration, Bluetooth usw.
  • Der Benutzer muss zustimmenGefährlichBerechtigungen
    • Typischerweise betreffen diese den Datenschutz oder potenzielle Kosten
    • Sie sind in Berechtigungsgruppen gruppiert:
      • Kalender, Anrufprotokoll, Kamera, Kontakte, Standort, Mikrofon, Telefon, Sensoren, SMS und Speicher
    • Der Benutzer genehmigt eine ganze Gruppe
      • Zum Beispiel sowohl das Senden als auch das Empfangen von SMS
  • Der Entwickler muss weiterhin alle Berechtigungen vom Betriebssystem im Manifest deklarieren und anfordern.

Weitere Informationen developer.android.com/guide/topics/permissions/overview

Wie man um Erlaubnis bittet – Delphi

android-09-5835008-2

Weitere Informationen: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model

Der Genehmigungsdienst

IsPermissionGranted-Methode

  • Mitglied von System.Permissions.TPermissionsService
    • Funktion IsPermissionGranted (const APermission: string): Boolean;
  • Finden Sie heraus, ob der App derzeit eine Berechtigung erteilt wurde
    • Gehen Sie niemals davon aus, dass es noch gewährt wird
  • Wenn kein Plattformberechtigungsdienst implementiert ist, um tatsächlich eine Überprüfung durchzuführen, antwortet er standardmäßig, dass alle Berechtigungen gewährt werden

IsEveryPermissionGranted-Methode

RequestPermissions

  • Mitglied von System.Permissions.TPermissionsService
    • Prozedur RequestPermissions(
    • const APermissions: TArray<string>;
    • const AOnRequestPermissionsErgebnis:
    • TRequestPermissionsResult[Event|Proc];
    • AOnDisplayRationale: TDisplayRationale[Event|Proc] = nil);
  • Fordern Sie eine oder mehrere Berechtigungen an
  • Alle derzeit nicht erteilten Berechtigungen werden angefordert.
  • Vorher kann dem Benutzer eine Begründung angezeigt werden, wenn eine Begründungskette für die fragliche Erlaubnis gesetzt wurde, die erneut eine Erlaubnis anfordert, die zuvor verweigert wurde, eine Begründungsanzeigeroutine wird durchlaufen
  • docwiki:Libraries/System.Permissions.TPermissionsService.RequestPermissions

TRequestPermissionsResult[Ereignis|Proc]

Wann nach Berechtigungen fragen

android-11-5541305-2

Wann fragen –KritischBerechtigungen

android-12-6122915-2

Wann fragen –SekundärBerechtigungen

android-13-5454135-2

Andere Best Practices

Mehr Informationen

Nächste Schritte

Führen Sie noch heute ein Upgrade auf Delphi 11 durch embarcadero.com/products/delphi

android-06-3847722-2

Android 11 ist aktuell führend ( Versionen 9 bis 11 machen 76,4 % aus) .

  • Android 12 wurde am 4. Oktober 2021 veröffentlicht
  • Android 11 wurde am 8. September 2020 veröffentlicht
  • Android 10 wurde am 3. September 2019 veröffentlicht
  • Android 9 wurde am 6. August 2018 veröffentlicht
  • Android 12 = API 31
  • Android 11 = API 30
  • Android 10 = API 29
  • Android 9 = API 28 (Kuchen)

https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201

Sicherheits- und Leistungsanforderungen für Android Play

  • Jedes Jahr wird die targetSdkVersion-Anforderung erweitert. Innerhalb eines Jahres nach jedem Android
  • Release müssen neue Apps und App-Updates auf die aktualisierte API-Ebene oder höher ausgerichtet sein.
  • November 2021:
    • Ziel-API-Ebene 30 (Android 11)
    • Veröffentlichen Sie im Android App Bundle-Format.
  • Erforderlich für die Google Play Console
  • Weitere Änderungen finden Sie im Leitfaden zur API-Migration: developer.android.com/distribute/best-practices/develop/target-sdk

Android-Änderungen in Delphi 11

android-14-1711493-2

*** – link

docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New

Unterstützung für Android 12?

android-07-6407549-2

Aktualisieren bestehender Android-Projekte

● Öffnen Sie ein Android-Projekt, das mit einer älteren Version erstellt wurde.
● Navigieren Sie zum andockbaren Fenster Projekte.
● Wählen Sie Android 32-Bit als aktive Zielplattform aus.
● Klicken Sie mit der rechten Maustaste auf den Knoten Bibliotheken.
● Klicken Sie auf Systemdateien auf Standard zurücksetzen.
● Anpassen mit Bibliotheken von Drittanbietern usw.
● Wiederholen für Android-64.

Aktualisieren Ihrer Android-Tools

  • Delphi installiert optional Android SDK 25.2.5 und Updates während der Installation
  • Fügen Sie ADB zu Ihrem Pfad hinzu:
    • C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491platform-tools
  • Fügen Sie SDKManager zu Ihrem Pfad hinzu:
    • C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491toolsbin
  • Laufen:
    • ADB-Kill-Server
    • SDKManager —aktualisieren
    • adb-Version
  • Wenn Sie eine Fehlermeldung erhalten: „.android/repositories.cfg konnte nicht geladen werden.“
    • Stellen Sie sicher, dass Sie einen .android-Ordner in Ihrem Benutzerverzeichnis haben
    • Erstellen Sie eine leere repositories.cfg-Datei
  • Neueste Version (ab Februar 2022)
    • Android Debug Bridge-Version 1.0.41
    • Version 32.0.0-8006631

Drahtloses Debugging

  • Hinzugefügt in Android 11 (API 30)
  • Wechseln Sie in den Entwicklermodus auf Android (tippen Sie sieben Mal auf „Build-Nummer“)
  • Aktivieren Sie das drahtlose Debugging
    • Entwickleroptionen -> Drahtloses Debuggen
    • Tippen Sie auf „Gerät mit Kopplungscode koppeln“
    • Aktivieren Sie „In diesem Netzwerk immer zulassen“ und drücken Sie „Zulassen“, wenn Sie dazu aufgefordert werden.
  • Von der Windows-CMD
    • adb Startserver
    • adb pair [ip]:[port] (aus dem Pairing-Dialog)
    • [Pairing-Code]
    • adb connect [ip]:[port] (vom drahtlosen Debugging-Bildschirm)
  • Aktualisieren Sie Geräte in IDE

Android-App-Bundle-Format

Ermöglicht Google Play, das Anwendungswartungsmodell Dynamic Delivery zu verwenden, um optimierte APKs für jedes Gerät zu generieren.

  • Projekt > Optionen > Erstellen > Delphi-Compiler > Kompilieren
  • Android App Bundle-Datei generieren (arm + arm64)

Nach einer erfolgreichen App-Bundle-Generierung zeigt die IDE ein Dialogfeld an, das den .aab-Dateipfad enthält.

Hinweis: Sie können ein App Bundle nicht ausführen oder debuggen. Um die Anwendung zu debuggen, müssen Sie das .APK-Paketformat verwenden

docwiki.embarcadero.com/RADStudio/en/Submitting_Your_Android_App_to_Google_Play#Android_App_Bundle_Support

Neues Android-Laufzeit-Berechtigungsmodell

  • Eingeführt in Android 6.0 (API 23) Marshmallow
    • Die Support-Bibliothek deckt frühere Android-Versionen ab
  • Das neue Modell optimiert den automatischen Aktualisierungsprozess
    • Berechtigungsgenehmigung wird bei der ersten Verwendung ausgelöst
    • Anstatt alle Berechtigungen bei der Installation zu genehmigen
  • Gibt Endbenutzern mehr Kontrolle über Berechtigungen
    • Einzelne Berechtigungen können pro App zugelassen oder verweigert und später geändert werden
  • Verwaltet durch neue Android-API-Methoden checkSelfPermission() & requestPermissions()

Weitere Informationen developer.android.com/training/permissions/requesting

Altes Genehmigungsdialogfeld

  • Während der Installation werden alle Berechtigungen akzeptiert
  • Der Benutzer kann einzelne Berechtigungen nicht verweigern
  • Alle im Manifest veröffentlichten Berechtigungen
  • Wenn sich die Berechtigungen ändern, müssen sie vor der Aktualisierung genehmigt werden

Neuer Genehmigungsdialog

  • Wenn Sie die individuelle Berechtigung zum ersten Mal anfordern, hat der Benutzer die Möglichkeit, sie zu verweigern oder zuzulassen
  • Wenn der Benutzer einmal ablehnt, kann der Benutzer verhindern, dass die App erneut fragt
  • Es ist wichtig, wann und wie Sie fragen (dazu später mehr)
  • Alle Berechtigungen sind weiterhin im Manifest veröffentlicht

Benutzer haben jetzt eine granulare Berechtigungskontrolle

android-10-7920934-2

Gefährlichvs.Normal Berechtigungen

  • Der Benutzer wird nicht aufgefordertNormalBerechtigungen
    • Beispiele: Internet, Vibration, Bluetooth usw.
  • Der Benutzer muss zustimmenGefährlichBerechtigungen
    • Typischerweise betreffen diese den Datenschutz oder potenzielle Kosten
    • Sie sind in Berechtigungsgruppen gruppiert:
      • Kalender, Anrufprotokoll, Kamera, Kontakte, Standort, Mikrofon, Telefon, Sensoren, SMS und Speicher
    • Der Benutzer genehmigt eine ganze Gruppe
      • Zum Beispiel sowohl das Senden als auch das Empfangen von SMS
  • Der Entwickler muss weiterhin alle Berechtigungen vom Betriebssystem im Manifest deklarieren und anfordern.

Weitere Informationen developer.android.com/guide/topics/permissions/overview

Wie man um Erlaubnis bittet – Delphi

android-09-5835008-2

Weitere Informationen: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model

Der Genehmigungsdienst

IsPermissionGranted-Methode

  • Mitglied von System.Permissions.TPermissionsService
    • Funktion IsPermissionGranted (const APermission: string): Boolean;
  • Finden Sie heraus, ob der App derzeit eine Berechtigung erteilt wurde
    • Gehen Sie niemals davon aus, dass es noch gewährt wird
  • Wenn kein Plattformberechtigungsdienst implementiert ist, um tatsächlich eine Überprüfung durchzuführen, antwortet er standardmäßig, dass alle Berechtigungen gewährt werden

IsEveryPermissionGranted-Methode

RequestPermissions

  • Mitglied von System.Permissions.TPermissionsService
    • Prozedur RequestPermissions(
    • const APermissions: TArray<string>;
    • const AOnRequestPermissionsErgebnis:
    • TRequestPermissionsResult[Event|Proc];
    • AOnDisplayRationale: TDisplayRationale[Event|Proc] = nil);
  • Fordern Sie eine oder mehrere Berechtigungen an
  • Alle derzeit nicht erteilten Berechtigungen werden angefordert.
  • Vorher kann dem Benutzer eine Begründung angezeigt werden, wenn eine Begründungskette für die fragliche Erlaubnis gesetzt wurde, die erneut eine Erlaubnis anfordert, die zuvor verweigert wurde, eine Begründungsanzeigeroutine wird durchlaufen
  • docwiki:Libraries/System.Permissions.TPermissionsService.RequestPermissions

TRequestPermissionsResult[Ereignis|Proc]

Wann nach Berechtigungen fragen

android-11-5541305-2

Wann fragen –KritischBerechtigungen

android-12-6122915-2

Wann fragen –SekundärBerechtigungen

android-13-5454135-2

Andere Best Practices

Mehr Informationen

Nächste Schritte

Führen Sie noch heute ein Upgrade auf Delphi 11 durch embarcadero.com/products/delphi


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Über den Autor

Chief Developer Advocate für Embarcadero Technologies.

Kommentieren

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

IN THE ARTICLES