Nous lançons aujourd'hui la deuxième version bêta d'Android 17. Nous continuons ainsi à développer une plate-forme qui privilégie la confidentialité, la sécurité et les performances. Cette mise à jour offre de nouvelles fonctionnalités, y compris l'API EyeDropper et un sélecteur de contacts respectueux de la confidentialité. Nous ajoutons également des API de mesure de distance avancée, de transfert inter-appareils et plus encore.
Cette version poursuit l'évolution de notre cadence de publication. Après cette version majeure annuelle du SDK au deuxième trimestre, nous publierons une mise à jour mineure du SDK.
Expérience utilisateur et interface utilisateur du système
Bulles
Les bulles sont une fonctionnalité de mode fenêtré qui offre une nouvelle expérience d'interface utilisateur flottante distincte de l'API Messaging bubbles. Les utilisateurs peuvent créer une bulle d'application sur leur téléphone, leur appareil pliable ou leur tablette en appuyant de manière prolongée sur l'icône d'une application dans le lanceur d'applications. Sur les grands écrans, une barre de bulles fait partie de la barre des tâches. Elle permet aux utilisateurs d'organiser les bulles, de passer de l'une à l'autre, et de les déplacer vers et depuis des points d'ancrage sur l'écran.
Vous devez suivre les consignes pour la prise en charge du mode multifenêtre afin de vous assurer que vos applications fonctionnent correctement en tant que bulles.
Les bulles ne sont pas encore entièrement activées dans la version bêta 2. Vous les trouverez dans une future version d'Android 17.
API EyeDropper
Une nouvelle API EyeDropper au niveau du système permet à votre application de demander une couleur à partir de n'importe quel pixel de l'écran sans nécessiter d'autorisations sensibles de capture d'écran.
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> if (result.resultCode == Activity.RESULT_OK) { val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK) // Use the picked color in your app } } fun launchColorPicker() { val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER) eyeDropperLauncher.launch(intent) }
Sélecteur de contacts
Un nouveau sélecteur de contacts au niveau du système via ACTION_PICK_CONTACTS accorde un accès en lecture temporaire, basé sur la session, uniquement aux champs de données spécifiques demandés par l'utilisateur, ce qui réduit le besoin d'autorisations READ_CONTACTS étendues. Il permet également de faire des sélections à partir des profils personnel ou professionnel de l'appareil.
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
val uri = it.data?.data ?: return@rememberLauncherForActivityResult
// Handle result logic
processContactPickerResults(uri)
}
}
val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
putExtra(EXTRA_ALLOW_MULTIPLE, true)
putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}
contactPicker.launch(intent)Compatibilité améliorée de la capture du pointeur avec les pavés tactiles
Auparavant, les pavés tactiles signalaient les événements d'une manière très différente des souris lorsqu'une application avait capturé le pointeur. Ils indiquaient l'emplacement des doigts sur le pavé plutôt que les mouvements relatifs qui seraient signalés par une souris. Il était donc assez difficile de prendre en charge correctement les pavés tactiles dans les jeux à la première personne. Désormais, par défaut, le système reconnaîtra les mouvements du pointeur et les gestes de défilement lorsque le pavé tactile est capturé, et les signalera comme des événements de souris. Vous pouvez toujours demander les anciennes données détaillées sur la position des doigts en demandant explicitement la capture dans le nouveau mode "absolu".
// To request the new default relative mode (mouse-like events) // This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE view.requestPointerCapture() // To request the legacy absolute mode (raw touch coordinates) view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)
Limites de repos du sélecteur interactif
En appelant getInitialRestingBounds sur ChooserSession d'Android, votre application peut identifier la position cible occupée par le sélecteur une fois les animations et le chargement des données terminés, ce qui permet de mieux ajuster l'UI.
Connectivité et inter-appareils
Transfert d'applications multi-appareils
Une nouvelle API Handoff vous permet de spécifier l'état de l'application à reprendre sur un autre appareil, tel qu'une tablette Android. Lorsque l'utilisateur active cette option, le système synchronise l'état via CompanionDeviceManager et affiche une suggestion de transfert dans le lanceur d'applications des appareils à proximité de l'utilisateur. Cette fonctionnalité est conçue pour offrir une continuité des tâches fluide, permettant aux utilisateurs de reprendre exactement là où ils s'étaient arrêtés dans leur workflow sur l'ensemble de leur écosystème Android. Il est essentiel de noter que le transfert prend en charge à la fois les transitions d'application à application native et le remplacement d'application par le Web. Il offre ainsi une flexibilité maximale et garantit une expérience complète, même si l'application native n'est pas installée sur l'appareil de réception.
API de mesure de distance avancées
Nous ajoutons la prise en charge de deux nouvelles technologies de mesure de distance :
- UWB DL-TDOA, qui permet aux applications d'utiliser l'UWB pour la navigation en intérieur. Cette surface d'API est conforme à la spécification FIRA (Fine Ranging Consortium) 4.0 DL-TDOA et permet une navigation en intérieur respectueuse de la confidentialité (en évitant le suivi de l'appareil par la balise).
- La détection de proximité permet aux applications d'utiliser la nouvelle spécification de portée adoptée par la WFA (Wi-Fi Alliance). Cette technologie offre une fiabilité et une précision améliorées par rapport à la spécification de mesure de distance basée sur le Wi-Fi Aware existant.
Améliorations apportées aux forfaits de données
Pour optimiser la qualité des contenus multimédias, votre application peut désormais récupérer les débits de données maximaux alloués par l'opérateur pour les applications de streaming à l'aide de getStreamingAppMaxDownlinkKbps et getStreamingAppMaxUplinkKbps.
Fonctionnalités de base, confidentialité et performances
Accès au réseau local
Android 17 introduit l'autorisation d'exécution ACCESS_LOCAL_NETWORK pour protéger les utilisateurs contre les accès non autorisés au réseau local. Comme cela relève du groupe d'autorisations NEARBY_DEVICES existant, les utilisateurs qui ont déjà accordé d'autres autorisations NEARBY_DEVICES ne seront pas invités à le faire à nouveau. En déclarant et en demandant cette autorisation, votre application peut détecter les appareils sur le réseau local (LAN), tels que les appareils connectés ou les récepteurs de diffusion, et s'y connecter. Cela empêche les applications malveillantes d'exploiter l'accès illimité au réseau local pour suivre et identifier secrètement les utilisateurs. Les applications ciblant Android 17 ou version ultérieure auront désormais deux options pour communiquer avec les appareils du réseau local : adopter des sélecteurs d'appareils respectueux de la confidentialité et gérés par le système pour ignorer l'invite d'autorisation, ou demander explicitement cette nouvelle autorisation au moment de l'exécution pour maintenir la communication sur le réseau local.
Diffusion du changement de décalage de fuseau horaire
Android fournit désormais une intention de diffusion fiable, ACTION_TIMEZONE_OFFSET_CHANGED, qui est déclenchée lorsque le décalage du fuseau horaire du système change, par exemple lors des transitions vers l'heure d'été. Cela complète les intents de diffusion existants ACTION_TIME_CHANGED et ACTION_TIMEZONE_CHANGED, qui sont déclenchés lorsque le code temporel Unix et l'ID du fuseau horaire changent, respectivement.
Gestion et hiérarchisation des NPU
Les applications ciblant Android 17 qui doivent accéder directement au NPU doivent déclarer FEATURE_NEURAL_PROCESSING_UNIT dans leur fichier manifeste pour éviter d'être bloquées. Cela inclut les applications qui utilisent le délégué NPU LiteRT, les SDK spécifiques aux fournisseurs, ainsi que l'API NNAPI obsolète.
Compatibilité avec ICU 78 et Unicode 17
Les bibliothèques d'internationalisation principales ont été mises à jour vers ICU 78, ce qui permet de prendre en charge de nouveaux scripts, caractères et blocs d'emoji, et de mettre en forme directement les objets time.
Protection par mot de passe unique par SMS
Android renforce sa protection des codes secrets à usage unique envoyés par SMS en retardant automatiquement l'accès aux messages SMS contenant ces codes. Auparavant, la protection était principalement axée sur le format SMS Retriever, dans lequel la diffusion des messages contenant un hachage SMS Retriever est retardée de trois heures pour la plupart des applications. Toutefois, certaines applications, comme l'application SMS par défaut, etc., et l'application correspondant au hachage sont exemptées de ce délai. Cette mise à jour étend la protection à tous les messages SMS contenant un code OTP. Pour la plupart des applications, les messages SMS contenant un code secret ne seront accessibles qu'après un délai de trois heures afin d'éviter le piratage de codes secrets. La diffusion SMS_RECEIVED_ACTION sera suspendue et les requêtes de base de données du fournisseur de SMS seront filtrées. Le message SMS sera disponible dans ces applications après le délai.
Accès différé aux messages SMS au format WebOTP
Si l'application est autorisée à lire les messages SMS, mais n'est pas le destinataire prévu de l'OTP (tel que déterminé par la validation du domaine), le message SMS au format WebOTP ne sera accessible qu'au bout de trois heures. Ce changement vise à améliorer la sécurité des utilisateurs en s'assurant que seules les applications associées au domaine mentionné dans le message peuvent lire le code de validation de manière programmatique. Cette modification s'applique à toutes les applications, quel que soit leur niveau d'API cible.
Accès différé aux messages SMS standards avec mot de passe à usage unique
Pour les messages SMS contenant un code OTP qui n'utilisent pas les formats WebOTP ou SMS Retriever, le SMS OTP ne sera accessible qu'au bout de trois heures pour la plupart des applications. Ce changement ne s'applique qu'aux applications qui ciblent Android 17 (niveau d'API 37) ou version ultérieure.
Certaines applications, comme l'application d'assistance ou l'application de SMS par défaut, ainsi que les applications associées aux appareils connectés, etc., seront exemptées de ce délai.
Toutes les applications qui s'appuient sur la lecture des messages SMS pour l'extraction des OTP doivent passer aux API SMS Retriever ou SMS User Consent pour assurer la continuité de leur fonctionnalité.
Calendrier Android 17
Nous allons passer rapidement de cette version bêta à notre jalon de stabilité de la plate-forme, prévu pour mars. À cette étape, nous fournirons les API SDK/NDK finales. À partir de ce moment-là, votre application pourra cibler le SDK 37 et être publiée sur Google Play pour vous aider à effectuer vos tests et à recueillir les commentaires des utilisateurs au cours des mois précédant la disponibilité générale d'Android 17.
Une année de nouveautés
Nous prévoyons de continuer à mettre à jour Android 17 dans une série de versions trimestrielles. La prochaine version du deuxième trimestre est la seule dans laquelle nous introduisons des modifications de comportement planifiées qui peuvent affecter les applications. Nous prévoyons de publier une version mineure du SDK au quatrième trimestre, avec des API et des fonctionnalités supplémentaires.
Premiers pas avec Android 17
Vous pouvez inscrire n'importe quel appareil Pixel compatible pour recevoir cette mise à jour et les futures mises à jour Android Bêta par voie hertzienne. Si vous ne possédez pas d'appareil Pixel, vous pouvez utiliser les images système 64 bits avec Android Emulator dans Android Studio.
Si vous participez actuellement au programme Android Bêta, vous recevrez une mise à jour OTA vers la version bêta 2.
Si vous disposez d'Android 26Q1 bêta et que vous souhaitez installer la version stable finale de 26Q1 et quitter la version bêta, vous devez ignorer la mise à jour OTA vers 26Q2 bêta 2 et attendre la sortie de 26Q1.
Nous aimerions connaître votre avis. N'hésitez pas à signaler les problèmes et à nous faire part de vos demandes de fonctionnalités sur la page de commentaires. Plus tôt nous recevrons vos commentaires, plus nous pourrons en tenir compte dans la version finale.
Pour une expérience de développement optimale avec Android 17, nous vous recommandons d'utiliser la dernière version preview d'Android Studio (Panda). Une fois la configuration terminée, voici quelques actions à effectuer :
- Compilez le nouveau SDK, effectuez des tests dans des environnements d'intégration continue et signalez tout problème dans notre outil de suivi sur la page de commentaires.
- Testez la compatibilité de votre application actuelle, vérifiez si elle est affectée par les modifications apportées à Android 17, installez-la sur un appareil ou un émulateur exécutant Android 17, puis testez-la de manière approfondie.
Nous mettrons à jour régulièrement les images système preview/bêta et le SDK tout au long du cycle de publication d'Android 17. Une fois que vous avez installé une version bêta, vous recevez automatiquement les prochaines mises à jour.
Over The Air pour toutes les versions Preview et bêta ultérieures.
Pour en savoir plus, consultez le site pour les développeurs Android 17.
Participez à la discussion
Alors que nous nous dirigeons vers la stabilité de la plate-forme et la disponibilité générale d'Android 17 plus tard dans l'année, vos commentaires restent notre atout le plus précieux. Que vous soyez un utilisateur précoce sur le canal Canary ou un développeur d'applications qui effectue des tests sur la version bêta 2, pensez à rejoindre nos communautés et à nous faire part de vos commentaires. Nous sommes à votre écoute.
Lire la suite
-
Actualités des produits
Aujourd'hui, nous améliorons le développement Android avec Gemma 4, notre dernier modèle ouvert de pointe conçu avec des capacités de raisonnement complexe et d'appel d'outils autonome.
Matthew McCullough • Temps de lecture : 2 min
-
Actualités des produits
Android 17 a officiellement atteint la stabilité de la plate-forme aujourd'hui avec la version bêta 3. Cela signifie que la surface de l'API est verrouillée. Vous pouvez effectuer les derniers tests de compatibilité et déployer vos applications ciblant Android 17 sur le Play Store.
Matthew McCullough • Temps de lecture : 5 min
-
Actualités des produits
Nous voulons vous aider à créer plus rapidement et plus facilement des applications Android de haute qualité. Pour cela, nous mettons l'IA à votre disposition.
Matthew McCullough • Temps de lecture : 2 min
Restez informé
Recevez chaque semaine les dernières informations sur le développement Android directement dans votre boîte de réception.