Construire le projet Open Source Android

Online Coding Courses for Kids

Android est le système d’exploitation le plus installé au monde. Il est disponible pour les téléphones, les appareils portables, les téléviseurs et les voitures, entre autres appareils.

Google mène le développement d’Android dans le cadre de la Projet Open Source Android (AOSP), mais le projet accepte également les contributions publiques.

Bien que vous n’ayez peut-être pas envisagé de plonger dans les entrailles d’Android auparavant, cela vous apportera de nouvelles perspectives et vous aidera à comprendre les modèles d’outils et de code courants dans le développement d’applications Android. Être capable de comprendre et de changer le comportement de la plate-forme Android ouvre de nombreuses possibilités pour façonner les appareils grand public populaires.

Dans ce didacticiel, vous obtiendrez une introduction au développement de la plate-forme Android. Au cours de ce processus, vous apprendrez à:

  • Configurez votre ordinateur pour créer l’AOSP.
  • Obtenez des sources AOSP.
  • Construisez l’émulateur Android à partir des sources.
  • Modifiez le code AOSP pour remplacer l’animation de démarrage.
Remarque: Le développement de la plateforme Android est très différent du développement d’applications Android. Il est utile de savoir comment développer des applications pour suivre ce didacticiel, mais ce n’est pas obligatoire.

Si vous souhaitez plus d’informations, un excellent moyen de commencer à apprendre le développement d’applications Android est notre didacticiel Your First Kotlin Android App. Mieux encore, plongez dans le parcours d’apprentissage Android et affinez vos compétences.

Gardez à l’esprit que le développement de la plateforme Android peut être difficile à digérer au début. Vous trouverez moins de documentation que celle disponible pour le développement d’applications Android, et la taille de l’arborescence des sources AOSP et le mélange de différentes technologies rendent l’apprentissage complexe.

Mais bien que la compréhension des différentes parties de la plate-forme Android nécessite du temps et des efforts, il est absolument possible d’y parvenir. Ce tutoriel vous aidera.

Maintenant, il est temps de commencer une quête très excitante et d’entrer dans les profondeurs des donjons Android.

Commencer

Téléchargez le projet de démarrage en cliquant sur le Télécharger les documents en haut ou en bas du didacticiel.

Vous trouverez un bootanimation.zip fichier contenant l’animation pour la version Android que vous êtes sur le point de créer. Vous n’avez pas à vous soucier de concevoir votre propre animation – l’équipe raywenderlich.com vous a couvert. Le résultat ressemble à ceci:

animation de démarrage personnalisée

Remarque: Si vous souhaitez créer votre propre animation à partir de zéro, vous pouvez le faire avec Adobe After Effects ou un logiciel similaire. Assurez-vous simplement d’exporter les graphiques et de compresser les données comme expliqué plus loin dans ce didacticiel.

Vous allez maintenant apprendre à télécharger les sources AOSP et à créer votre propre build.

Configuration de l’environnement de développement

Avant de commencer, vous devez savoir que la construction de l’AOSP a certaines exigences. Vous aurez besoin d’un ordinateur d’au moins 300 Go disponible (oui, 300!). Étant donné que vous téléchargerez un grand nombre de données, vous aurez également besoin d’une connexion Internet fiable.

En ce qui concerne l’environnement de travail, AOSP ne prend actuellement pas en charge Windows. Vous pouvez utiliser macOS, mais le système d’exploitation le plus courant pour travailler avec l’AOSP est Ubuntu Linux, sur lequel ce didacticiel se concentrera.

Si vous êtes toujours intéressé par macOS, consultez la documentation officielle de Google pour configuration d’un environnement de construction macOS.

Dans ce didacticiel, vous comptez sur Docker pour configurer votre environnement de développement à l’aide d’un conteneur Ubuntu exécuté sur un hôte Linux. Vous pouvez utiliser l’hôte Linux directement, mais en utilisant Docker, vous pouvez séparer les deux environnements. Ceci est utile dans le cas où votre système d’exploitation hôte utilise différentes versions des bibliothèques dont vous aurez besoin ici.

Remarque: Étant donné que Docker fait partie de la configuration, vous pourriez penser que vous pouvez également utiliser macOS et Windows. Bien que cela soit vrai, le fait que Docker ne s’exécute pas nativement sur macOS / Windows comme sur Linux aura un impact énorme sur les performances. Cela est dû aux lourdes E / S pendant le processus de génération.

Configuration du conteneur Ubuntu

Ce didacticiel suppose que Docker est déjà installé sur votre ordinateur. Si ce n’est pas le cas, veuillez vous référer au documentation officielle Docker pour les instructions d’installation.

Une fois que Docker fonctionne sur votre ordinateur, tenez-vous bien car le plaisir commence maintenant! :]

Ouvrez un terminal et exécutez la commande suivante:

docker pull ubuntu:18.04

Cette commande téléchargera l’image officielle d’Ubuntu 18.04 depuis Docker Hub.

Ensuite, exécutez la commande suivante pour vous assurer que tout est en place:

docker image ls

Ceci répertorie toutes les images Docker disponibles sur votre machine. Assurez-vous que l’image Ubuntu apparaît dans la liste avant de passer à l’étape suivante.

Images Docker disponibles

Créez un dossier vide appelé aosp dans un emplacement facile à trouver – par exemple, sous le chemin de votre bureau: ~ / Bureau / aosp. Vous utiliserez ce dossier comme espace de travail pour la création des sources AOSP.

Démarrage du conteneur Ubuntu

Ensuite, exécutez la commande suivante:

docker run -v ~/Desktop/aosp:/home/aosp -it ubuntu:18.04

Cela lancera un conteneur basé sur l’image Ubuntu, tout en partageant le dossier que vous venez de créer.

Vous partagez ce dossier avec le conteneur Docker afin de pouvoir y accéder ultérieurement à partir de votre ordinateur, c’est-à-dire directement à partir de votre système, en dehors du conteneur Docker. Après cela, votre invite de terminal passera à root, indiquant que vous êtes à l’intérieur du conteneur Docker.

Assurez-vous d’avoir accès à / accueil / aosp en exécutant ls /home/aosp. Si vous recevez un message comme Aucun fichier ou répertoire de ce nom, le conteneur Docker ne peut pas voir le dossier que vous avez passé dans la commande précédente avec le paramètre -v.

Répétez les étapes ci-dessus pour valider que vous avez accès au dossier `/ home / aosp` à partir du conteneur Docker.

Mise à jour du conteneur et installation de packages

Maintenant, exécutez la commande suivante pour mettre à jour les packages Ubuntu dans le conteneur:

apt-get update

Vous devriez voir la sortie suivante dans votre terminal:

Réponse de mise à jour Apt-get

Ensuite, vous devez installer plusieurs packages dont vous avez besoin pour compiler les sources AOSP pendant le processus de construction. Pour ce faire, exécutez la commande suivante:

apt-get install -y git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib x11proto-core-dev libx11-dev libgl1-mesa-dev libxml2-utils xsltproc unzip python python3 openjdk-8-jdk rsync

Remarque: Cela peut prendre quelques minutes.

Maintenant que vous avez configuré Ubuntu, vous découvrirez un outil qui vous aidera à télécharger les sources Android plus efficacement.

Utilisation de l’outil Repo

La base de code Android contient une énorme quantité de code source organisé dans différents référentiels Git. Repo est un outil intégré à Git pour faciliter le workflow de développement. Il s’agit d’un script Python qui prend soin d’interagir avec le système de contrôle des révisions, vous aidant à gérer plusieurs référentiels Git.

Repo le fait en utilisant un manifeste fichier lié à la révision actuelle de chaque référentiel Git. Si vous avez déjà travaillé avec des sous-modules Git, c’est similaire.

Remarque: Il est important de comprendre que le manifeste Le fichier n’est pas le manifeste Android que vous utilisez lors du développement d’applications Android. Le nom ici est une coïncidence malheureuse.

Dans ce didacticiel, vous utiliserez Repo pour télécharger les sources Android.

Créez un nouveau dossier nommé poubelle à l’intérieur / accueil / aosp. Puis ajouter / accueil / aosp / bin à la CHEMIN variable d’environnement:

PATH=/home/aosp/bin:$PATH

Cela garantit que Repo peut s’exécuter à partir de n’importe quel chemin dans votre terminal.

Exécutez la commande suivante pour télécharger Repo dans le conteneur:

curl https://storage.googleapis.com/git-repo-downloads/repo > /home/aosp/bin/repo

Cela utilise curl pour faire une requête HTTP vers l’URL donnée, puis redirige la sortie avec > à / accueil / aosp / bin / repo. Fondamentalement, vous téléchargez le script Repo et le copiez sur le poubelle dossier.

Ensuite, exécutez la commande suivante:

chmod +x /home/aosp/bin/repo

Cela rend Repo exécutable, comme +x indique.

Pour vous assurer que tout fonctionne, exécutez la commande suivante:

repo help

Cela montre la sortie suivante, indiquant que Repo est prêt à l’emploi:

Repo help output without init

Vérifiez que la sortie de votre terminal correspond à celle de la capture d’écran, pour vous assurer que tout est en place.

Super, votre conteneur est maintenant prêt à construire l’AOSP!

Ensuite, vous vous concentrerez sur l’obtention de l’arborescence source AOSP.

Expression heureuse

Obtenir les sources

Avant de télécharger les sources Android avec Repo, vous devez configurer votre nom d’utilisateur et votre adresse e-mail dans Git. Sans eux, Repo s’arrêtera et ne téléchargera rien.

Utilisez cette commande pour vérifier rapidement leur disponibilité:

git config -l

S’ils sont configurés, vous devriez voir quelque chose comme ce qui suit dans votre terminal:

user.email=you@email.com
user.name=you

Si ce n’est pas le cas, exécutez la procédure ci-dessous pour configurer votre nom d’utilisateur:

git config --global user.name "Your name"

Ensuite, exécutez ce qui suit pour configurer votre adresse e-mail:

git config --global user.email "you@email.com"

Tous ensemble, vous allez maintenant initialiser un dossier qui contiendra tous les fichiers source pour AOSP ainsi que l’historique suivi de ces fichiers source.

Prêt à vous lancer? Passez ensuite à la section suivante!

Initialisation du dossier source

Puis dans / accueil / aosp, créez un nouveau dossier nommé la source détenir les sources. Basculez votre chemin actuel vers / accueil / aosp / source, puis exécutez la commande suivante:

repo init -u https://android.googlesource.com/platform/manifest

Ici, init installe Repo dans le répertoire courant. Il initialise également un .repo , qui contient des informations sur les référentiels Git vers lesquels pointe le manifeste. Vous transmettez les informations URL avec -u param, dans ce cas en passant l’URL du fichier manifeste AOSP. C’est ainsi que Repo obtient des informations Maître branche.

Remarque: Si vous souhaitez extraire une autre branche, spécifiez-la en passant une autre -b , comme dans l’exemple ci-dessous:

repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r33

Obtenez un aperçu de toutes les succursales en visitant le Balises et versions de code source Android site. Dans ce didacticiel, vous allez utiliser la branche principale.

Une fois la commande précédente terminée, vérifiez que vous avez correctement configuré Repo en exécutant à nouveau cette commande:

repo help

Cette fois, cette commande affiche l’écran suivant:

Sortie d'aide du dépôt, maintenant initialisée

Ceci est une liste des différentes commandes disponibles avec Repo. Vérifiez que vous obtenez la même sortie dans votre terminal.

Pour plus d’informations sur les différentes options de Repo, visitez le Référence des commandes Repo site.

Téléchargement de la source

Enfin, exécutez la commande suivante pour télécharger l’arborescence source AOSP dans le répertoire de travail. Assurez-vous d’avoir une connexion Internet fiable et suffisamment d’espace sur votre disque. Étant donné que ce processus pourrait prendre entre une et deux heures, il serait vraiment ennuyeux de devoir le redémarrer!

repo sync

Pendant que vous attendez, c’est le moment idéal pour préparer une délicieuse tasse de thé. :]

Après un succès synchroniser, votre répertoire de travail contiendra les dossiers indiqués ci-dessous:

Arborescence des sources AOSP

Maintenant que vous avez tout en place, il est temps de créer réellement l’AOSP.

Construire l’AOSP

La première étape pour créer l’AOSP en fonction des sources que vous venez de télécharger consiste à configurer l’environnement de génération. Exécutez cette commande depuis / accueil / aosp / source:

source build/envsetup.sh

Cela rendra un ensemble de commandes utiles – dont vous aurez besoin pour les prochaines étapes – disponibles dans votre terminal.

Tapez ensuite lunch dans votre terminal et exécutez-le. Cette commande affiche la liste des types de périphériques cibles que vous pouvez créer.

Liste des options de déjeuner disponibles

L’option par défaut est aosp_arm-eng, qui construit les images Android pour un appareil de type téléphone utilisant l’architecture ARM.

Vous pouvez le créer, mais lorsque vous exécutez l’émulateur sur votre ordinateur, vous remarquerez qu’il est très lent. Une meilleure option est de construire la cible aosp_x86_64-fra.

Sélectionnez cette cible en entrant l’index associé dans la liste des options. Dans ce cas, entrez 23 et appuyez sur Revenir. Le terminal affichera la sortie suivante:

La sortie générée en exécutant la commande déjeuner après avoir sélectionné l'API cible et le type d'émulateur

Remarque: Pour un bon aperçu des différentes cibles de build, veuillez vous référer à la documentation de Google sur créer des couches dans AOSP.

Exécution de la build

À ce stade, l’environnement est prêt à déclencher la génération. Pour ce faire, saisissez m et appuyez sur Entrer. Cela démarre le processus de génération, qui prend entre deux et trois heures, selon votre ordinateur.

Êtes-vous prêt pour une deuxième tasse de thé? :]

Une fois le processus de génération terminé, vous trouverez le résultat dans / home / aosp / source / out / target / product.

Pour démarrer l’émulateur, exécutez simplement emulator. Cette commande n’est disponible que parce que vous avez exécuté build source / envsetup.sh puis sélectionné une cible de construction avec lunch plus tôt. Si vous avez fermé le terminal pour une raison quelconque une fois la génération terminée, vous devrez réexécuter ces commandes.

Animation AOSP

Excellent travail, vous venez de construire l’AOSP pour la première fois!

Cependant, votre quête ne s’arrête pas là. Dans la section suivante, vous apprendrez comment modifier l’animation de démarrage Android.

Configuration de l’animation Android Bootloader

Le système d’exploitation Android initialise certains services internes pendant la phase de démarrage, juste avant la Interface utilisateur du système charges. Android affiche l’animation du chargeur de démarrage, également connue sous le nom d’animation de démarrage, pendant cette période.

Si vous souhaitez creuser en C ++, la source d’animation de démarrage se trouve dans cadres / base / cmds / bootanimation. Voici comment cela fonctionne: le système essaie de charger un fichier zip d’animation à partir des emplacements suivants, dans l’ordre:

  1. /system/media/bootanimation-encrypted.zip, qui est utilisé lorsque chiffrement des données c’est actif.
  2. /system/media/bootanimation.zip.
  3. /oem/media/bootanimation.zip.

Si le système ne trouve pas de fichier d’animation de démarrage dans ces chemins, il générera dynamiquement une animation par défaut.

Regarder le format d’animation de démarrage

bootanimation.zip suit un format spécifique. Tout d’abord, il est important de noter qu’il utilise le boutique niveau de compression, ce qui signifie qu’il ne comprime pas son contenu. L’animation de démarrage ne fonctionnera pas si le fichier ZIP utilise la compression.

Ouvrir et décompresser bootanimation.zip, que vous avez téléchargé avec le matériel de ce didacticiel. À l’intérieur du décompressé bootanimation dossier, vous verrez un fichier nommé desc.txt et trois dossiers nommés part0, partie 1 et partie 2. À l’intérieur de ces partX dossiers, vous trouverez plusieurs fichiers PNG avec des noms ordonnés.

Comprendre les composants

Les PNG à l’intérieur bootanimation.zip représentent les différentes images de votre animation.

Remarque: L’animation a été créée à l’aide d’un outil d’animation open source appelé Synfig Studio, qui est un logiciel d’animation 2D. Disponible pour toutes les plateformes, à savoir Linux, Windows, macOS. Commander son site officiel pour en savoir plus.

Ils se trouvent dans trois dossiers distincts, car cette animation spécifique contient trois parties différentes:

  1. part0: L’animation montre le logo raywenderlich.com de plus en plus grand.
  2. partie 1: La taille du logo augmente et diminue, pulsant comme un battement de cœur.
  3. partie 2: La taille du logo diminue.

Notez que le nombre de pièces dépend de la conception de l’animation.

desc.txt décrit le comportement de l’animation. La première ligne définit les paramètres généraux. Dans ce cas, les valeurs 720, 1280 et 30 correspondre à width, height et fps:

  • largeur: Largeur de l’animation en pixels.
  • la taille: Hauteur de l’animation en pixels.
  • fps: Vitesse de l’animation en images par seconde.

Les lignes restantes donnent des informations sur chaque partie de l’animation. Ils suivent le format type, count, pause, et path, où:

  • type: Indique le type d’animation. p signifie que cette partie va jouer jusqu’à ce que la fin du démarrage l’interrompt. c signifie qu’il jouera inconditionnellement jusqu’à ce qu’il se termine. Dans votre animation, toutes les parties utilisent le type c.
  • compter: Nombre de fois où cette partie sera jouée. 0 signifie qu’il boucle jusqu’à la fin du démarrage.
  • pause: Indique le nombre d’images à retarder après la fin de cette partie.
  • chemin: Nom du répertoire contenant les cadres de cette partie.

Il existe quelques autres paramètres que vous pouvez utiliser pour modifier l’animation de démarrage. Leur description complète se trouve dans le fichier suivant, dans les sources AOSP: cadres / base / cmds / bootanimation / FORMAT.md.

Personnalisation de l’animation de démarrage

Pour modifier l’animation de démarrage dans votre build AOSP, vous devez utiliser la même cible que vous avez sélectionnée précédemment dans le lunch menu: aosp_x86_64-fra.

Ouvert aosp_x86_64.mk de / home / aosp / source / build / make / target / product. Au bas du fichier, ajoutez les lignes suivantes:

# Boot animation
PRODUCT_COPY_FILES += 
    device/generic/x86_64/bootanimation.zip:system/media/bootanimation.zip

Cela indique au processus de génération de copier votre fichier d’animation dans system / media / bootanimation.zip. Ceci est l’un des chemins où le chargeur de démarrage recherchera un bootanimation.zip fichier, comme décrit précédemment.

Ensuite, copiez bootanimation.zip dans / home / aosp / source / device / generic / x86_64 /.

Dans aosp_x86_64.mk, trouvez la ligne commençant par PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST, puis ajouter system / media / bootanimation.zip après le dernier .

Sans cela, le processus de génération ne vous permettra pas de copier le fichier ZIP dans système / média. Le code résultant devrait ressembler à ceci:

PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += 
    root/init.zygote32_64.rc 
    root/init.zygote64_32.rc 
    system/media/bootanimation.zip 

Enfin, enregistrez le fichier et exécutez le m pour créer une nouvelle version avec les modifications. Ne vous inquiétez pas, la construction ne prendra que quelques minutes – pas de thé cette fois! :]

Une fois la construction terminée, ouvrez l’émulateur en exécutant emulator dans votre terminal. Tadaaa! Votre émulateur affiche maintenant votre animation personnalisée lors du démarrage.

Animation de démarrage personnalisée montrant l'animation raywenderlich.com

Défi: Pour ajouter votre animation de démarrage personnalisée, vous avez modifié les sources AOSP d’origine, ce qui peut créer des conflits lors de la mise à jour de la base de code. N’oubliez pas qu’il y a une nouvelle version d’Android chaque année.

Pour éviter cette situation, l’alternative recommandée est de créer votre propre produit. Votre défi consiste à créer les fichiers de configuration nécessaires et à ajouter votre produit comme nouvelle entrée au lunch menu.

Consultez la documentation de Google pour construire un produit pour plus d’informations.

Toutes nos félicitations! Vous venez de créer votre propre version Android. Soyez fiers, c’est une quête que tout le monde n’a pas accomplie!

Où aller en partant d’ici?

Téléchargez le projet final en utilisant le Télécharger les documents en haut ou en bas de ce didacticiel.

Dans ce didacticiel, vous avez configuré votre environnement de développement pour créer AOSP et vous avez ajouté une petite personnalisation en remplaçant l’animation de démarrage. Vous pouvez maintenant essayer de concevoir votre propre animation et l’inclure dans votre build. Surprenez-nous avec vos compétences en conception!

Ce que vous avez couvert ici n’est que le début de l’aventure AOSP. Il y a beaucoup à apprendre en matière de développement de plate-forme Android. Vérifiez documentation officielle AOSP pour plus d’informations.

Si vous souhaitez naviguer en ligne dans l’arborescence des sources AOSP, utilisez le Outil de recherche de code Android. Cela vous aidera à connaître l’arbre source.

J’espère que ce tutoriel vous a aidé dans vos premiers pas avec AOSP. Si vous avez des questions sur ce que vous avez couvert ou si vous souhaitez montrer votre propre personnalisation Android, rejoignez la discussion ci-dessous!

Close Menu