Comment créer une ROM personnalisée à partir d'un projet Open Source Android

Si vous êtes familier avec l'enracinement de votre téléphone Android ou le téléchargement de ROM personnalisées, telles que le très populaire CyanogenMod ou son successeur Lineage OS, vous vous êtes peut-être demandé - comment les gens construisent-ils ces ROM? Combien de travail est consacré exactement au développement d'une ROM personnalisée?

Ce guide vous expliquera les bases du développement de votre propre ROM Android personnalisée. Il convient de noter qu'il s'agit d'une entreprise colossale - si vous n'avez aucune expérience en matière de codage ou de farce dans les terminaux Linux, vous voudrez peut-être acquérir des connaissances à votre actif avant de vous plonger dans ce domaine profond. Mais si vous avez au moins une idée de base de ces choses, je vais essayer d'expliquer les choses aussi simplement que possible, afin que vous puissiez suivre.

Fondamentalement, ce que nous faisons est de télécharger le code source brut d' Android (AOSP) et de le modifier à notre guise. Parce qu'il ya tellement de sources à choisir pour différents appareils, ce guide de référence simplement le maître la source connue sous le nom PSBA (Android Open Source Project) .

Maintenant, le problème avec l'AOSP est que le code source pur n'inclut pas les propriétés matérielles spécifiques au périphérique. En termes simples, le matériel comme votre appareil photo et votre GPU ne fonctionnera pas «hors de la boîte» lors du développement avec l'AOSP. En fait, votre appareil ne démarrera même pas sans ces binaires matériels.

Si vous développez pour un téléphone de marque Google (Pixel, Nexus, etc.), vous pouvez trouver les binaires matériels directement à partir de Google, et ce guide vous guidera pour les obtenir et les intégrer dans votre ROM. Cependant, si vous développez une ROM pour un téléphone de marque (Sony, Samsung, etc.) ... eh bien, bénissez votre cœur, car vous êtes prêt à faire un tour.

Certains fabricants ont leurs propres projets open source ou lancent des outils de développement pour les futurs développeurs, tandis que d'autres fabricants gardent un œil sur leurs codes propriétaires. Voici une brève liste des projets open source des fabricants les plus populaires:

Centre de publication Samsung Open Source

Monde des développeurs Sony

Assistance Lenovo

Centre de publication Open Source de Huawei

Développeurs Motorola

Cela dit, continuons en supposant que nous construisons une ROM pour l'expérience Android la plus basique et la plus vanille, pour un appareil Google Pixel. Avec ces connaissances à votre actif, vous pourrez vous diversifier et commencer à développer des versions personnalisées de ROM de fabricants spécifiques.

Conditions requises pour ce guide:

  • Projet Open Source Android
  • Téléphone Pixel XL ou émulateur Android pour Linux
  • Système d'exploitation Linux 64 bits - Ubuntu ou Linux Mint sont les distributions les plus conviviales pour les débutants, tandis que BBQLinux a été développé spécifiquement pour les développeurs Android.
  • Python
  • Un ordinateur costaud (la compilation de code prend beaucoup de mémoire et d'espace!)

Configuration de votre environnement de construction

Commençons par configurer l'émulateur Android sur votre machine Linux. Que vous ayez ou non un appareil Google Pixel XL, il est toujours plus sûr d'essayer votre nouvelle ROM sur un émulateur Android avant de la flasher sur votre appareil. Mon préféré est Genymotion, donc je vais vous expliquer comment installer cet émulateur particulier. Cependant, vous pouvez également consulter ce guide «Meilleurs émulateurs Android», car la plupart d'entre eux ont également une compatibilité Linux.

Rendez-vous sur le site Web de Genymotion, créez un compte, vérifiez-le par e-mail et téléchargez l'exécutable sur votre bureau Linux.

Ouvrez maintenant un terminal Linux et tapez:

Chmod + x genymotion-xxxxx.bin (remplacez xxxx par le numéro de version dans le nom de fichier)

./genymotion-xxxxxx.bin

Appuyez sur Y pour créer le répertoire Genymotion. Tapez maintenant dans le terminal:

cd genymotion && ./genymotion

Maintenant, il vous demandera de commencer le processus d'installation, alors continuez à cliquer sur Suivant jusqu'à ce que vous arriviez à la fenêtre Ajouter des périphériques virtuels. Sélectionnez «Pixel XL» sous l'option Modèle de l'appareil, puis terminez l'installation. Vous pouvez tester l'appareil virtuel si vous le souhaitez, ce sera essentiellement comme avoir un téléphone Pixel XL sur votre bureau.

Configurons maintenant Python:

$ apt-get installer python

Nous devons maintenant configurer le kit de développement Java sur votre machine Linux. Ouvrez le terminal Linux et tapez les commandes suivantes:

$ sudo apt-get mise à jour

$ sudo apt-get install openjdk-8-jdk

Vous devrez maintenant configurer le système Linux pour autoriser l'accès aux périphériques USB. Exécutez le code suivant dans le terminal Linux:

Cela téléchargera le fichier 51-android.txt requis qui permet l'accès au périphérique USB susmentionné. Ouvrez le fichier .txt et modifiez-le pour inclure votre nom d'utilisateur Linux, puis placez le fichier .txt à l'emplacement suivant: (en tant qu'utilisateur root ). Branchez maintenant votre appareil sur votre ordinateur via USB pour que les nouvelles règles prennent automatiquement effet.

Téléchargement de la source Android

L'AOSP est hébergé sur Git, nous allons donc utiliser un outil appelé Repo pour communiquer avec Git.

Nous devons d'abord configurer un dossier / bin dans votre répertoire personnel. Tapez les commandes suivantes dans le terminal Linux:

$ mkdir ~ / bin

$ PATH = ~ / bin: $ PATH

Maintenant, nous allons télécharger l'outil Repo, alors tapez dans le terminal Linux:

$ curl //storage.googleapis.com/git-repo-downloads/repo> ~ / bin / repo

$ chmod a + x ~ / bin / repo

Une fois Repo installé, nous devons maintenant créer un répertoire vide pour contenir vos fichiers de travail. Alors tapez ceci dans le terminal Linux:

$ mkdir WORKING_DIRECTORY

$ cd WORKING_DIRECTORY

Nous allons maintenant configurer Git avec votre nom et votre adresse e-mail - utilisez une adresse Gmail que vous vérifiez régulièrement , sinon vous ne pourrez pas utiliser l'outil de révision de code Gerrit.

$ git config –global user.name «Votre nom»

$ git config - utilisateur global.email [email protected]

Nous allons maintenant dire à Repo d'extraire le dernier manifeste principal d'AOSP de Git:

$ repo init -u //android.googlesource.com/platform/manifest

Si cela est fait avec succès, vous recevrez un message indiquant que Repo a été initialisé dans votre répertoire de travail. Vous trouverez également un répertoire «.repo» dans le répertoire client. Nous allons donc maintenant télécharger l'arborescence des sources Android avec:

Synchronisation de $ repo

Construire la source Android

C'est là que les binaires matériels mentionnés au début de ce guide entrent en jeu. Rendons-nous sur la page des pilotes AOSP et téléchargeons les binaires Pixel XL pour Android 7.1.0 (NDE63P). Vous souhaitez télécharger à la fois l'image du fournisseur et les composants matériels. Celles-ci se présentent sous forme d'archives compressées, alors extrayez-les sur votre bureau et exécutez le script auto-extractible à partir du dossier racine. Choisissez d'installer les binaires à la racine du WORKING_DIRECTORY que nous avons créé précédemment.

Tapez maintenant dans votre terminal Linux:

$ faire clobber

$ source build / envsetup.sh

Nous allons maintenant choisir la cible à construire, alors tapez:

$ lunch aosp_marlin-userdebug

$ setpaths

$ make –j4

Là, nous avons maintenant «construit» une ROM Android à partir de la source. Alors testons-le dans l'émulateur, en tapant dans le terminal:

$ émulateur

Alors jouez un peu dans l'émulateur. Comme vous pouvez le voir, une expérience Android purement vanille est assez minime, et c'est pourquoi les fabricants personnalisent l'AOSP en fonction de leurs besoins. Vous pouvez donc flasher cette ROM que nous venons de créer sur votre appareil si vous le souhaitez, mais sans ajouter d'améliorations, une expérience Android purement vanille serait en effet une chose très ennuyeuse.

Donc, ce que les fabricants font généralement avec l'AOSP, c'est le fourrer, ajouter leurs propres binaires propriétaires, personnaliser l'interface utilisateur, ajouter un logo de démarrage, etc. .

Restez à l'écoute, car la deuxième partie de ce guide passera par l'ajout de polices, de thèmes et d'une animation de démarrage à votre ROM!