Passer au contenu principal
Docs
Nouveautés
Notes de version
Derniers bulletins de sécurité
Dernier document de définition de la compatibilité (CDD)
Mises à jour des sites
Premiers pas
À propos
Commencer
Télécharger
Créer
Test
Créer
Contribuer
Communauté
Outils, compilation et documentations associées
Sécurité
Aperçu
Bulletins
Fonctionnalités
Tests
Bonnes pratiques
Sujets principaux
Architecture
Son
Appareil photo
Connectivité
Données
Écran
Polices
Graphismes
Interaction
Contenus multimédias
Performance
Autorisations
Alimentation
Exécution
Paramètres
Storage
Tests
Mises à jour
Virtualisation
Compatibilité
Document de définition de la compatibilité (CDD)
La suite de tests de compatibilité
Appareils Android
Seiche
Entreprise
TV
Automotive
Débutter
Consignes de développement
Outils de développement
Outils et infrastructure de test
Détails de la release
Référence
HIDL
HAL
Fédération du commerce
Suite de tests de sécurité
Android Code Search
/
English
Deutsch
Español – América Latina
Français
Indonesia
Italiano
Polski
Português – Brasil
Tiếng Việt
Türkçe
Русский
עברית
العربيّة
فارسی
हिंदी
বাংলা
ภาษาไทย
中文 – 简体
中文 – 繁體
日本語
한국어
Connexion
Documentation
Nouveautés
Premiers pas
Sécurité
Sujets principaux
Compatibilité
Appareils Android
Automotive
Référence
Docs
Plus
Nouveautés
Premiers pas
Sécurité
Sujets principaux
Compatibilité
Appareils Android
Automotive
Référence
Android Code Search
Aperçu
Architecture
Aperçu
Couche d'abstraction matérielle (HAL)
Aperçu
HIDL (obsolète)
Aperçu
Interfaces et packages
Hachage d'interface
Services et transfert de données
File d'attente des messages rapides
Utiliser l'IPC Binder
Utiliser MemoryBlock
Outils de configuration de la pile réseau
Exécution de threads de modèle
Convertir des modules HAL
Types de données
Syndicat sécurisé
Gestion des versions de l'interface
Guide de style du code
HIDL C++
Aperçu
Colis
Interfaces
Types de données
Fonctions
HIDL Java
Aperçu
Types de données
Méthodes et erreurs d'interface
Constantes d'exportation
Autre
Vérification de la rétrocompatibilité du framework HIDL
HAL disponibles dynamiquement
Anciens HAL (AOSP <=v7)
Noyau
Aperçu
Notes de version du kernel
Versions et mises à jour du noyau stables
Kernels Android courants
Projet GKI
Développement de GKI
Schéma de gestion des versions GKI
Builds de version GKI
Aperçu
Builds de version android12-5.10
Builds de version android13-5.10
Builds de version android13-5.15
Builds de version android14-5.15
Builds de version android14-6.1
Builds de version android15-6.6
Builds de version android16-6.12
Compilations obsolètes de GKI
Builds obsolètes android12-5.10
Builds obsolètes android13-5.10
Builds obsolètes android13-5.15
Builds obsolètes android14-5.15
Builds obsolètes android14-6.1
Builds obsolètes android15-6.6
Builds obsolètes android16-6.12
Processus de lancement de GKI
Erratum GKI 16-6.12 android-mainline
Maintenir un KMI stable
Surveillance de l'ABI du noyau
Aperçu
Exécuter la surveillance des ABI
Utiliser des listes de symboles
Modules
Aperçu
Configurer les fonctionnalités du kernel en tant que modules GKI
Consignes concernant les modules de fournisseurs
Modules de noyau chargeables
Compatibilité avec les modules du noyau
Tester les modules GKI
Optimisation du temps de démarrage
Fonctionnalités de débogage
Développer du code de kernel pour GKI
Prise en charge du système de fichiers du noyau Android
Étendre le noyau avec eBPF
Utiliser DebugFS dans Android 12
Module cryptographique GKI certifiable FIPS 140-3
EROFS
Questions fréquentes sur le kernel Android
Tests unitaires de mise en réseau du noyau
Transition d'ION vers les tas DMA-BUF (kernel 5.4)
Système de fichiers incrémentiel
Configuration
Aperçu
Implémenter des propriétés système en tant qu'API
Ajouter des propriétés système
Implémenter l'API Schema de fichier de configuration
Archiver
Aperçu
ConfigStore
Créer l'interface HAL
Implémenter le service
Utilisation côté client
Ajouter des classes et des éléments ConfigStore
Superpositions de l'arborescence des appareils
Aperçu
Implémenter des DTO
Syntaxe DTO
Compiler et valider
Utiliser plusieurs DT
Partitions DTB et DTBO
Optimiser des DTO
NDK du fournisseur (<=AOSP 14)
Aperçu
Activer VNDK
Compatibilité avec le système de compilation VNDK
Extensions VNDK
Conception d'instantanés VNDK
Générer des instantanés VNDK
Générer des instantanés des fournisseurs
Espace de noms de l'éditeur de liens
Répertoires, règles et sepolicy
RenderScript
Stabilité des ABI
Vérificateur d'utilisations d'ABI prédéfinis
Objet de l'interface du fournisseur
Aperçu
Fichiers manifestes
Matrices de compatibilité
Cycle de vie de FCM
Développement du fichier manifeste de l'appareil
Règles de correspondance
Ressources supplémentaires
AIDL
Aperçu
Langage AIDL
Backends AIDL
AIDL stable
AIDL pour les HAL
Exécuter des services AIDL de manière dynamique
Annotations dans AIDL
FMQ avec AIDL
Fuzzing AIDL
Guide de style AIDL
Communication interprocessus avec Binder
Aperçu
Gérer les fils de discussion
Héritage de priorité
Bootloader (chargeur d'amorçage)
Aperçu
Raison de démarrage canonique
En-tête de l'image de démarrage
Implémenter bootconfig
Images de récupération
Images DTB
Implémenter des mises à jour OTA
Verrouiller et déverrouiller le bootloader
Informations sur la version dans les propriétés AVB
Déplacer fastboot vers l'espace utilisateur
Bootloader générique
Aperçu
Déployer GBL
Partitions
Aperçu
Mise en page des partitions
Partitions de démarrage du fournisseur
Partitions du fournisseur et de l'ODM DLKM
Image système partagée Android
Partitions de ramdisk
Partition de démarrage générique
Partitions ODM
Partitions de produits
Implémenter une partition de module GKI
Appliquer les interfaces de partitionnement des produits
Partitions de l'OS Trusty
Taille de page de 16 ko
Aperçu
Utiliser Cuttlefish avec une taille de page de 16 ko sur ARM64
Simuler Cuttlefish avec une taille de page de 16 ko sur x86-64
Compiler et flasher des appareils Pixel 8 compatibles avec les pages de 16 ko
Flasher un Pixel avec une taille de page de 16 ko
Obtenir la taille de la page
Optimiser les performances pour le mode 16 ko
Propriétés système de 16 ko
Activer le bouton d'activation des pages de 16 ko
Activer l'option de rétrocompatibilité 16 ko
Niveau de l'API du fournisseur
Son
Aperçu
Terminologie
Implémentation
HAL audio
HAL audio AIDL
Compatibilité avec les règles audio configurables dans l'HAL AIDL
Comparaison entre les HAL audio AIDL et HIDL
HIDL
HIDL Audio HAL
Configurer les règles audio
Configurer une bibliothèque partagée
Configurer les effets de prétraitement
Formats de données
Attributs
Effets
Audio haute résolution
Limite du type d'appareil
AAudio et MMAP
Préparation audio
Latence
Aperçu
Contributeurs
Concevoir pour une latence réduite
Mesurer la latence audio
Dongle de bouclage audio
Mesures
Pour les développeurs d'applications
Éviter l'inversion de priorité
Conversion du taux d'échantillonnage
Débogage
MIDI
Aperçu
Architecture MIDI
Procédure de test MIDI
USB
Audio numérique USB
Attributs de mixeur préférés sur les appareils USB
Audio TV
Capture simultanée
Déclencheur sonore
Routage combiné des appareils audio
Son spatial
Son spatial et suivi de la tête
Implémentation
Suivi de la tête via LE Audio
Dose sonore
Mode barre de son dynamique
Appareil photo
Aperçu
Architecture
HAL de l'appareil photo
Sous-système HAL
Concepts fondamentaux
Modes 3A et transition d'état
Débogage de la caméra
Traitement des erreurs et des flux
Métadonnées et commandes
Flux de sortie, recadrage et zoom
Création et envoi de la demande
Configurations de flux
Performance
API de gestion des tampons HAL3 de l'appareil photo
Paramètres de session
Un seul producteur, plusieurs consommateurs
Fonctionnalités de l'appareil photo
Sortie de la caméra 10 bits
Bokeh de l'appareil photo
Diffusion simultanée du flux de la caméra
Extensions pour l'appareil photo
Outil de validation des extensions d'appareil photo
Stabilisation de l'aperçu de l'appareil photo
Caméras USB externes
Modes HDR
imagerie HEIF
Caméras monochromes
Suivi des mouvements
Compatibilité avec plusieurs caméras
Caméras du système
Contrôle de l'intensité de la lampe de poche
Ultra HDR
Utiliser un appareil comme webcam
Capture à large gamme de couleurs
Gestion des versions
Compatibilité des versions de l'appareil photo
Connectivité
Aperçu
Bluetooth
Aperçu
Services Bluetooth
Bluetooth à basse consommation
Compatibilité avec les appareils auditifs via le BLE
Publicité BLE
Vérifier et déboguer
Exigences concernant l'IHC
Calibrage de la présence
Identification de l'OS Android
NFC
Émulation de carte hôte de FeliCa
Synchronisation des paiements hors hôte NFC
Sécuriser la fonctionnalité NFC
Accès rapide à votre carte de paiement
Commandes NCI propriétaires Android
Appels et messages
5G non autonome (NSA)
Implémenter le blocage des numéros de téléphone
Notifications d'appel
Service de sélection de domaine
Implémenter une affordance d'urgence
Base de données des numéros d'urgence Android
Numéros d'urgence et appels d'urgence
Implémenter IMS
Droit d'accès au service IMS
Enregistrement unique IMS
Suggestion de compte de téléphone
Implémenter le RTT
Prise en charge des applications d'appel tierces
Messagerie vocale visuelle
Opérateur
Aperçu
Fractionnement de réseau 5G
APN et CarrierConfig
Identification de l'opérateur
Implémenter des plans de données
Identifiants des appareils
eSIM
Implémenter l'eSIM
Exigences concernant le modem pour la prise en charge de l'eSIM
API eUICC
Plusieurs profils activés
Gérer les erreurs de l'API eUICC
Profils de test téléchargeables
Intégration de l'opérateur de transfert d'eSIM
Améliorer l'expérience utilisateur du VPN
Compatibilité avec les réseaux multi-opérateurs
Personnaliser le comportement de l'appareil pour les utilisateurs en déséquilibre
Refactorisation de RIL
Compatibilité avec les petites cellules
Droits de l'opérateur sur la carte UICC
Heure
Aperçu
Détection du fuseau horaire basée sur la position
Détection du fuseau horaire de téléphonie
Détection du temps réseau
Détection de l'heure GNSS
Détection de l'heure externe
Priorité de la source temporelle
Règles et recommandations concernant les fuseaux horaires
Règles concernant les fuseaux horaires
Bande ultralarge
Aperçu
Interface HAL UWB
Wi-Fi
Aperçu
HAL Wi-Fi
Fonctionnalités de l'infrastructure Wi-Fi
Tester, déboguer et régler le Wi-Fi
Filtre de paquets Android
Wi-Fi de l'opérateur
Comportement de la randomisation MAC
Implémenter la randomisation MAC
Passpoint (Hotspot 2.0)
Concurrency Wi-Fi STA/AP
Concurrency STA/STA Wi-Fi
Faire confiance lors de la première utilisation (TOFU)
Wi-Fi Aware
Évitement des canaux de coexistence Wi-Fi/mobile
Wi-Fi Direct
Wi-Fi Easy Connect
Point d'accès Wi-Fi (Soft AP)
Concurrency AP/AP Wi-Fi
Mode Wi-Fi à faible latence
Sélection du réseau Wi-Fi
Recherche de points d'accès Wi-Fi pour le déchargement réseau préféré
Délai aller-retour (DAR) du Wi-Fi
WPA3 et Wi-Fi Enhanced Open
Wi-Fi 7
Profils d'appareils associés
API Connectivity Diagnostics
Interface utilisateur de la connectivité
Sélection du réseau
Évaluation de la portée: séquence de messages hors bande et spécification de la charge utile
Rapports sur l'intensité du signal
Données
Aperçu
Explication des tags d'utilisation des données
Mode Sauvegarde des données
Surveillance du trafic eBPF
Exclure les types de réseaux des données d'utilisation
Présentation des statistiques des interfaces réseau
Données de partage de connexion
Déchargement matériel du partage de connexion
Dates de réinitialisation du cycle de consommation
Présentation du noyau
Modifications apportées au noyau
Écran
Aperçu
Applis
Implémenter des icônes adaptatives
Raccourcis d'application
Implémenter des icônes circulaires
Notifications et widgets de conversation
Flous de fenêtre
Widgets et raccourcis
Implémenter des transitions d'application synchronisées
Couleur
Gestion des couleurs
Encoches
Ne pas déranger
Lecture de vidéos HDR
Implémenter l'éclairage nocturne
Mappage des tons de la luminance HDR sur une plage compatible avec le SDR
Conception Material You
Couleurs dynamiques
Appareils pliables
Positions en tente et en coin
Multifenêtre
Aperçu
Fonctionnalités de fenêtrage du bureau
Interactions en mode Écran partagé
Picture-in-picture
Agrandissement de la fenêtre
Multi-écran
Aperçu
Pratiques recommandées
Environnement de test et de développement
Questions fréquentes
Multireprise
Règle de lancement d'activité
Compatibilité avec les écrans
Compatibilité avec les décorations système
Écran de verrouillage
Prise en charge de l'éditeur de mode de saisie
Routage des entrées
Audio multizone
Notifications
Historique des notifications
Autorisation pour les notifications nécessitant une confirmation
Gestionnaire de tâches
Mode démo en magasin
Suggestions de rotation
Implémenter un classificateur de texte
Composition SDR et HDR mixte
Commandes multimédias dans l'UI du système
Extensions WindowManager
Polices
Implémenter une police de remplacement personnalisée
Graphismes
Aperçu
Architecture
BufferQueue et Gralloc
Implémenter la comptabilité de la mémoire DMABUF et du GPU
Tracer les transitions de fenêtre à l'aide de Winscope
Aperçu
Exécuter Winscope
Capturer des traces
Aperçu
ViewCapture dans les applications système
Sur l'appareil
Utiliser Winscope
Utiliser des commandes adb
Traces de chargement
Analyser les traces
Aperçu
Navigation dans Timeline
Recherche de trace
SurfaceFlinger
WindowManager
Protolog
Transitions de shell
ViewCapture
Surface et SurfaceHolder
Aperçu
SurfaceView et GLSurfaceView
SurfaceTexture
TextureView
SurfaceFlinger et WindowManager
Aperçu
Propriétés système dans SurfaceFlinger
HAL Hardware Composer
Aperçu
Implémenter le HAL HWC
Gestion du branchement à chaud
AIDL pour le HAL HWC
Gestion du framebuffer client
Réduire la consommation de mémoire graphique
Couches et écrans
VSync
Frame Pacing
Fréquence d'actualisation multiple
Fréquence d'actualisation adaptative
EGLSurfaces et OpenGL ES
Aperçu
Implémenter OpenGL ES et EGL
Configuration d'OpenGLRenderer
Vulkan
Aperçu
Implémenter Vulkan
Framework de synchronisation
Tests
Tests d'implémentation
Intégrer à Android CTS
Tests du programme de qualité drawElements
Verrouillage de tampon non signalé avec AutoSingleLayer
Ajouter de nouveaux formats de pixel à Android
HDR dans les captures d'écran Android
Interaction
Aperçu
Entrée
Aperçu
Fichiers de disposition des touches
Fichiers de mappage des caractères clés
Fichiers de configuration des périphériques d'entrée
Guide de migration
Appareils avec clavier
Appareils tactiles
Outil getevent
Outil validatekeymaps
Technologie tactile
Aperçu
Implémenter le retour haptique
Aperçu
Implémenter des constantes et des primitives
Mappage des constantes entre HAL et l'API
Implémenter des effets d'enveloppe linéaire par morceaux
Évaluer le matériel
Base de l'expérience utilisateur pour le framework haptique
Conception UX haptique
Évaluation du matériel
Aperçu
Configurer l'équipement de test
Configurer le logiciel de test
Mesurer et enregistrer les effets cibles
Analyser la forme d'onde
Comparer les résultats à l'aide du plan des performances
Réseaux de neurones
Aperçu
Exécutions intensives et files d'attente de messages rapides
Mise en cache de la compilation
Flux de contrôle
Détection et attribution d'appareils
Pools de mémoire
Bonnes pratiques d'implémentation du pilote NNAPI
Qualité de service
Extensions de fournisseurs
Périphériques
Aperçu
Accessoires audio
Aperçu
Casque 3,5 mm
Spécifications du casque
Caractéristiques de l'appareil avec connecteur casque
Casque USB
Spécifications du casque
Spécifications de l'adaptateur
Caractéristiques de l'appareil
Comportement attendu du casque
Test du casque
Accessoires personnalisés
Aperçu
Accessoire Android Open
Aperçu
AOA 2.0
AOA 1.0
Désactiver la signalisation de données via USB
Stylet
Capteurs
Aperçu
Pile de capteurs
Types de capteurs
Interaction
Protocole HID du suivi de la tête
Alimentation
Traitement par lot
Consommation d'énergie
Modes
Modes de création de rapports
Mode suspendu
Capteurs désactivés
HAL des capteurs
HAL Sensors AIDL
Multi-HAL des capteurs
Sensors HAL 2.0
Sensors HAL 1.0
Abandon de la version HAL
Environnement d'exécution du hub contextuel
Aperçu
Contenus multimédias
Aperçu
Modules multimédias
Module MediaProvider
Personnaliser les composants multimédias
Décodage à faible latence dans MediaCodec
Renforcement du framework multimédia
Dépendances des fournisseurs de SoC
Dépendances OEM
DRM
Transcodage de contenus multimédias dans un format compatible
Exporter les statistiques d'encodage vidéo
Conseils aux OEM pour l'implémentation du ROI
Performance
Aperçu
Mise en cache de l'APK
Congélateur d'applications mises en cache
Optimiser les temps de démarrage
Santé
Aperçu
Implémenter Health 2.1
Couche d'abstraction de cgroup
Daemon de tueur de mémoire faible
Optimisation automatique guidée par les commentaires (12 ou version ultérieure)
Utiliser l'optimisation guidée par le profil
Instantanés de tâche
Journalisation WAL de compatibilité
Hibernation des applications
Amélioration des performances pour les jeux
Statistiques sur la mémoire historique des événements MM
Obtenir des informations sur l'état du système
Autorisations
Aperçu
Fonctionnalités de veille
Rappel de l'accès aux données de localisation en arrière-plan
Fournisseur de contacts et affinités
Contrôle d'accès discrétionnaire
ID d'appareil immuables
Espaces de noms pour les bibliothèques natives
Liste d'autorisations privilégiées
Packages système préinstallés
Indicateurs de confidentialité
Liste d'autorisation d'UID partagés signés par la plate-forme
Indicateurs de confidentialité
Limiter les emplacements opportunistes
Lecture d'écran limitée
Rôles Android
Autorisations d'exécution
Liste d'autorisations de signature
Autorisations d'accéder à la position à trois états
Implémenter le HAL USB
Streaming d'application associée
Limites des intents plein écran
Capturer du contenu pour les notes
Alimentation
Aperçu
Gestion de l'alimentation
Atténuation thermique
HAL des statistiques d'alimentation
Gestion de l'alimentation des applications
Gestion de l'alimentation de la plate-forme avec Doze
Gestion des performances
Outils de suivi du comportement en arrière-plan des applications
Compatibilité avec les appareils sans batterie
Mesurer la puissance des composants
Mesurer la puissance de l'appareil
Mesurer les valeurs de puissance
Économiseur de batterie de routine
Veille TV
Service SystemSuspend
Wattson
Présentation de l'analyse de la puissance du processeur
Collecter et analyser des traces
Exécution
Aperçu
Vérifications dexpreopt et <uses-library>
Améliorations apportées à ART dans Android 8.0
Format de bytecode Dalvik
Format exécutable Dalvik
Format d'instructions exécutables Dalvik
Contraintes
Configuration
Aperçu
Configuration du service ART
Configuration du gestionnaire de paquets (obsolète)
ART TI
Implémenter la configuration signée
Déboguer la récupération de mémoire ART
Implémenter le compilateur JIT ART
Modifier la valeur des ressources d'une application au moment de l'exécution
Résoudre les problèmes liés aux RRO
Profils d'images de démarrage
Redémarrages silencieux (<= AOSP 14)
À propos du zygote
Paramètres
Aperçu
Consignes de conception
Modèles et composants
Architecture de l'information
Paramètres personnalisés
Recherche universelle
Storage
Aperçu
Stockage classique
Stockage adoptable
Espace de stockage cloisonné
Passthrough FUSE
Configuration de l'appareil
Exemples de configuration
Statistiques plus rapides
Abandon de SDCardFS
Tests
Aperçu
Workflow de développement des tests
Aperçu
Configuration de compilation simple
Configuration de test complexe
Tests d'instrumentation
Aperçu
Exemple de tests d'auto-instrumentation
Cibler un exemple d'application
GoogleTests (GTests)
Aperçu
Ajouter des GTests
Tests de métriques
Tests d'hôte JAR
Cartographie des tests
Exécuter des tests avec Atest
Android Test Station OmniLab
Guide de l'utilisateur
Appareils virtuels dans OmniLab ATS
Activer automatiquement le débogage USB sur les builds utilisateur
Exécuter des tests UIConductor
API
Notes de version
Questions fréquentes
Vendor Test Suite (VTS)
Aperçu
GTest paramétré pour les tests HAL
Configuration du test
Image système générique (GSI)
Vendor Test Suite (VTS) 10
Aperçu
Tutoriels vidéo
Test des systèmes avec VTS
Framework de test
Commandes shell de l'appareil
Modèles de test
Test de HAL compatible avec le nom de service
Vérification de la testabilité du HAL
Tests multi-appareils
VTS avec ramdisk de débogage
Tableau de bord VTS
Configuration
Base de données
Interface utilisateur
Infrastructure de l'atelier
Infrastructure de test automatisé
Architecture du contrôleur hôte
Tests de performances
Atelier de test de la Trade Federation (TF)
Premiers pas
Aperçu
Commencer
Environnement de développement
Utiliser des appareils
Console
Cycle de vie des tests
Gestion des options
Exemple de bout en bout
Écrire et exécuter des tests Tradefed
Aperçu
Tester via Tradefed
Aperçu
Écrire un lanceur de test
Écrire un exécuteur de test IRemoteTest fractionné
Écrire un test piloté par l'hôte
Écrire un test sans appareil côté hôte
Créer des rapports sur les métriques ou les données d'un test
Nouvelle tentative de test automatique
Relancer l'isolation
Collecte automatique des journaux en cas d'échec de la connexion
Effectuer un dry run d'une configuration
Exécuter des tests d'instrumentation à partir d'APK
Écrire un test shell
Filtres globaux
Tester via des suites
Aperçu
Configurer des suites
Options et filtres de transmission
Vérifier l'état du système
Structure AndroidTest.xml
Configurer le sharding
Utiliser des contrôleurs de module
Utiliser la nouvelle tentative de la suite
Modules multi-appareils
Développer TF
Aperçu
Consignes concernant les ateliers de test
Configurer Eclipse
Inclure des tests unitaires et fonctionnels
Exécuter le vérificateur de bugs susceptibles de générer des erreurs
Contribuer au code non principal
Architecture
Aperçu
Configuration XML
Structure de haut niveau
Modèles et inclusions
Objet de configuration
Configuration globale
Options du fichier
Options d'hôte
Concepts avancés
Secrets du keystore
Planificateur de commandes de test
Structure d'un lanceur de test
Segmentation des tests
Exécuter des tests avec plusieurs appareils
Utiliser la couche de script
Charger des protocoles avec une configuration globale
Appareil natif
Gestionnaire d'appareils
États des appareils
Allocation d'appareils
Détection d'appareils
Créer
Fournisseurs de compilation
BuildInfo
Configuration de l'appareil
Préparateurs cibles
Préparateurs multicibles
Résultats
Créer un outil de création de rapports sur les résultats
Gérer les fichiers journaux
Résumé du signalement de résultats
Économiseur de journaux
Métriques
Collecteur de métriques hôte
Collecte de métriques côté appareil
Index des packages
Tests multiappareils avec Mobly
Aperçu
Déboguer le code de la plate-forme native
Aperçu
Lire les rapports de bugs
Comprendre la journalisation
Implémenter la journalisation des fournisseurs avec portée
Diagnostiquer les plantages natifs
Évaluer les performances
Aperçu
Comprendre systrace
Utiliser ftrace
Identifier les à-coups liés à la capacité
Identifier les à-coups liés au jitter
Implémentation de la fonctionnalité
Implémenter le mode Atelier de test
Utiliser des débogueurs
Déboguer les problèmes d'utilisation de la mémoire native
Équipe de secours
Implémenter storaged
Utiliser strace
Mises à jour
Aperçu
APEX
Format de fichier APEX
Fournisseur APEX
Créer des packages OTA
Signer les builds pour la publication
Réduire la taille des mises à jour OTA
Test A/B virtuel
Aperçu
Implémenter un test A/B virtuel
Implémenter un test A/B virtuel : correctifs
Mises à jour du système A/B obsolètes
Aperçu
Implémenter des mises à jour A/B
Questions fréquentes
(Obsolète) Mises à jour du système autres que A/B
Aperçu
OTA basée sur des blocs
Dans les packages OTA
Code spécifique à l'appareil
Partitions dynamiques
Aperçu
Implémenter des partitions dynamiques
OTA pour les appareils A/B
OTA pour les anciens appareils A/B
Mise à jour OTA pour les appareils autres que A/B
Définir la taille de la super partition
Règles concernant les fuseaux horaires
Point de contrôle des données utilisateur
Mises à jour système dynamiques
Resume-on-Reboot
Mise à niveau du groupe pour les mises à jour de l'OS
Invitation à effectuer une mise à niveau pour les mises à jour de l'OS en attente
Ligne principale