Android 11 est livré sur la plupart des nouveaux téléphones, mais Android 12 a été déployé partout sur les appareils Pixel. Rejoignez ce webinaire pour voir ce qui a changé dans ces dernières versions d’Android et découvrez quelques bonnes pratiques pour le développement d’Android avec des conseils pour cibler les dernières versions du système d’exploitation le plus populaire.
Afficher ou télécharger Google Slides
Table of Contents
Part de marché des systèmes d’exploitation pour ordinateurs de bureau, mobiles et tablettes dans le monde
https://gs.statcounter.com/os-market-share/desktop-mobile-tablet/worldwide/#monthly-200901-202201
Part de marché des fabricants de téléphones mobiles dans le monde (janvier 2020 – janvier 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Part de marché des fabricants de téléphones mobiles dans le monde (janvier 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Part de marché Android vs iOS dans le monde (janvier 2020 – janvier 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Part de marché de la version mobile Android dans le monde (janvier 2020 – janvier 2022)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Version mobile Android – Part de marché dans le monde (janvier 2022)
Android 11 est le leader actuel ( les versions 9 à 11 représentent 76,4%)
- Android 12 est sorti le 4 octobre 2021
- Android 11 est sorti le 8 septembre 2020
- Android 10 est sorti le 3 septembre 2019
- Android 9 est sorti le 6 août 2018
- Androïd 12 = API 31
- Androïd 11 = API 30
- Android 10 = API 29
- Android 9 = API 28 (Tarte)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Exigences de sécurité et de performances d’Android Play
- Chaque année, l’exigence de targetSdkVersion progressera. Dans l’année suivant chaque androïde
- version, les nouvelles applications et les mises à jour d’applications devront cibler le niveau d’API mis à jour ou supérieur.
- Novembre 2021 :
- API cible niveau 30 (Android 11)
- Publiez au format Android App Bundle.
- Requis par Google Play Console
- Voir le guide de migration de l’API pour les autres changements : developer.android.com/distribute/best-practices/develop/target-sdk
Changements Android dans Delphi 11
*** – link
docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New
Prise en charge d’Android 12 ?
Mise à niveau de projets Android existants
● Ouvrez une génération de projet Android avec une version plus ancienne.
● Accédez à la fenêtre ancrable Projets.
● Sélectionnez Android 32 bits comme plate-forme cible active.
● Cliquez avec le bouton droit sur le nœud Bibliothèques.
● Cliquez sur Rétablir les fichiers système par défaut.
● Personnalisez avec des bibliothèques tierces, etc.
● Répétez l’opération pour Android-64.
Mettre à jour vos outils Android
- Delphi installe éventuellement Android SDK 25.2.5 et les mises à jour lors de l’installation
- Ajoutez ADB à votre chemin :
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491platform-tools
- Ajoutez SDKManager à votre chemin :
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491toolsbin
- Cours:
- adb kill-serveur
- Gestionnaire de SDK —mise à jour
- version adb
- Si vous obtenez une erreur « .android/repositories.cfg n’a pas pu être chargé. »
- Vérifiez que vous avez un dossier .android dans votre répertoire utilisateur
- Créer un fichier repositories.cfg vide
- Dernière version (à partir de février 2022)
- Pont de débogage Android version 1.0.41
- Version 32.0.0-8006631
Débogage sans fil
- Ajouté dans Android 11 (API 30)
- Entrez en mode développeur sur Android (appuyez sept fois sur « Build Number »)
- Activer le débogage sans fil
- Options pour les développeurs -> Débogage sans fil
- Appuyez sur « Appairer l’appareil avec le code d’appairage »
- Cochez « Toujours autoriser sur ce réseau », puis appuyez sur « Autoriser » lorsque vous y êtes invité.
- À partir de Windows CMD
- serveur de démarrage adb
- paire adb [ip] : [port] (à partir de la boîte de dialogue de couplage)
- [code d’association]
- adb connect [ip] : [port] (à partir de l’écran de débogage sans fil)
- Actualiser les appareils dans l’IDE
Format d’ensemble d’applications Android
Permet à Google Play d’utiliser le modèle de service d’application Dynamic Delivery pour générer des fichiers APK optimisés pour chaque appareil.
- Projet > Options > Construction > Compilateur Delphi > Compilation
- Générer le fichier Android App Bundle (arm + arm64)
Lors d’une génération réussie d’app bundle, l’IDE présente une boîte de dialogue contenant le chemin du fichier .aab.
Remarque : Vous ne pouvez pas exécuter ou déboguer un App Bundle. Pour déboguer l’application, vous devez utiliser le format de package .APK
Nouveau modèle d’autorisation d’exécution Android
- Introduit dans Android 6.0 (API 23) Marshmallow
- La bibliothèque de support couvre les versions antérieures d’Android
- Un nouveau modèle rationalise le processus de mise à jour automatique
- Approbation des autorisations déclenchée à la première utilisation
- Au lieu d’approuver toutes les autorisations lors de l’installation
- Donne aux utilisateurs finaux plus de contrôle sur les autorisations
- Les autorisations individuelles peuvent être accordées ou refusées par application, et modifiées ultérieurement
- Géré via de nouvelles méthodes d’API Android checkSelfPermission() & requestPermissions()
Plus d’informations developer.android.com/training/permissions/requesting
Ancienne boîte de dialogue d’approbation des autorisations
- Lors de l’installation, toutes les autorisations sont acceptées
- L’utilisateur ne peut pas refuser les autorisations individuelles
- Toutes les autorisations publiées dans le manifeste
- Si les autorisations changent, le doit être approuvé avant la mise à jour
Nouvelle boîte de dialogue d’approbation d’autorisation
- La première fois que vous demandez l’autorisation individuelle, l’utilisateur a la possibilité de refuser ou d’autoriser
- Si l’utilisateur refuse une fois, il peut empêcher l’application de demander à nouveau
- Il est important de savoir quand et comment vous demandez (plus à ce sujet plus tard)
- Toutes les autorisations encore publiées dans le manifeste
Les utilisateurs disposent désormais d’un contrôle d’autorisation granulaire
Dangereuxvs.Normal Autorisations
- L’utilisateur n’est pas invité àNormalautorisations
- Exemples : Internet, Vibreur, Bluetooth, etc.
- L’utilisateur doit approuverDangereuxautorisations
- Généralement, ceux-ci impliquent la confidentialité ou un coût potentiel
- Ils sont regroupés en groupes d’autorisation :
- Calendrier, journal des appels, appareil photo, contacts, emplacement, microphone, téléphone, capteurs, SMS et stockage
- L’utilisateur approuve un groupe entier
- Par exemple, envoyer et recevoir des SMS
- Le développeur doit toujours déclarer et demander toutes les autorisations du système d’exploitation dans le manifeste.
Plus d’informations developer.android.com/guide/topics/permissions/overview
Comment demander une autorisation – Delphi
Plus d’informations : docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model
Le service des autorisations
- System.Permissions contient une instance de TPermissionsService appelée PermissionsService ou accédez-y via la propriété DefaultService
- IsPermissionGranted : si une autorisation est actuellement accordée à l’application
- RequestPermissions : demander des autorisations spécifiques et leur famille
- IsEveryPermissionGranted : si les autorisations répertoriées sont actuellement accordées
- Nouveaux types pertinents/connexes ajoutés aux unités RTL Android
- Manifest.permission et Build.VERSION dans Androidapi.JNI.Os.pas
- ContextCompat, ActivityCompat et PermissionChecker dans Androidapi.JNI.Support.pas
Méthode IsPermissionGrantedIsPermissionGranted MethodIsPermissionGranted MethodIsPermissionGranted Method
- Membre de System.Permissions.TPermissionsService
- fonction IsPermissionGranted(const APermission : chaîne) : booléen ;
- Découvrez si une autorisation est actuellement accordée à l’application
- Ne présumez jamais qu’il est toujours accordé
- S’il n’y a pas de service d’autorisations de plate-forme implémenté pour effectuer une vérification, il répond par défaut que toutes les autorisations sont accordées
Méthode IsEveryPermissionGrantedIsEveryPermissionGranted Method
- docwiki:/RADStudio/Uses_Permissions
- docwiki:Libraries/System.Permissions.TPermissionsService.IsEveryPermissionGranted
- Membre de System.Permissions.TPermissionsService
- function IsEveryPermissionGranted(const APermissions : TArray<string>) : booléen ;
- Découvrez si toutes les autorisations répertoriées sont actuellement accordées
- Ne présumez jamais qu’il est toujours accordé
- Chaînes d’ autorisation trouvées dans TJManifest_permission.JavaClass d’Androidapi.JNI.Os
- Liste des permissions et descriptions
Demander des autorisations
- Membre de System.Permissions.TPermissionsService
- procédure RequestPermissions(
- const APermissions : TArray<string> ;
- const AOnRequestPermissionsResult :
- TRequestPermissionsResult[Événement|Proc] ;
- AOnDisplayRationale : TDisplayRationale[Event|Proc] = nil );
- Demander une ou plusieurs autorisations
- Toutes les autorisations qui ne sont pas actuellement accordées seront demandées.
- Auparavant, une justification peut être affichée à l’utilisateur lorsqu’une chaîne de justification a été définie pour l’autorisation en question demandant à nouveau une autorisation précédemment refusée une routine d’affichage de justification est transmise
- docwiki:Bibliothèques/System.Permissions.TPermissionsService.RequestPermissions
TRequestPermissionsResult[Événement|Proc]
- Rappel de RequestPermissions
- TRequestPermissionsResult[Événement|Proc] =
- procédure(Expéditeur : TObject ;
- const APermissions : TArray<string> ;
- const AGrantResults : TArray<TPermissionStatus> );
- Type de rappel lorsque le système a traité nos demandes d’autorisation
- Pour chaque autorisation demandée dans APermissions, il existe un booléen dans AGrantResults indiquant si l’autorisation a été accordée.
Quand demander des autorisations
Quand demander –CritiqueAutorisations
Quand demander –SecondaireAutorisations
Autres bonnes pratiques
- Utiliser la version asynchrone des méthodes et des dialogues
- NE bloquez PAS le fil de l’interface utilisateur !
- Utilisez toujours HTTPS (tout doit être sécurisé)
- Utilisez les nouvelles bibliothèques clientes HTTP docwiki.embarcadero.com/RADStudio/en/Using_an_HTTP_Client
- Indy est toujours disponible, mis à jour et pris en charge
- Découvrez la bibliothèque de programmation parallèle
- Apprenez à connaître System.IOUtils et TPath
- Apprenez à connaître ADB, logcat et Log.d
Plus d’information
- Écriture sur la carte SD stackoverflow.com/a/57600189/255
- Obtenir le chemin de la carte SD amovible
- Androidapi.JNI.Os.pas
- getExternalStorageDirectory
- getExternalStoragePublicDirectory
- getExternalStorageState
- Androidapi.JNI.Os.pas
- Découvrez « Composant d’autorisations mobiles pour Android » dans GetIt
Prochaines étapes
- Démarrer une version d’essai de RAD Studio embarcadero.com/products/rad-studio/start-for-free
- Obtenir l’édition communautaire embarcadero.com/products/delphi/starter
- Mettre à jour aujourd’hui! embarcadero.com/app-development-tools-store/rad-studio
- Voir les offres spéciales embarcadero.com/radoffer
- Abonnez-vous sur YouTube youtube.com/c/EmbarcaderoTechnologies
- Suivez-nous sur Twitter twitter.com/embarcaderotech
- Aimez-nous sur Facebook facebook.com/embarcaderotech
- Suivez-nous sur LinkedIn linkedin.com/company/embarcadero-technologies
- Lisez notre blog blogs.embarcadero.com
Passez à Delphi 11 aujourd’hui embarcadero.com/products/delphi
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition