SlideShare ist ein Scribd-Unternehmen logo
1 von 39
ANDROID
INTERNALS
ANDROID ET SES ROMS ALTERNATIVES
GUILLAUME LESNIAK – OPENWORLDFORUM
2012
A PROPOS DE MOI

            • Etudiant en L3 MIAGE ISC
            • Programmeur
              C/C++/JavaScript/PHP
            • Développeur de jeux 3D
              depuis 4 ans
            • Développeur
              CyanogenMod depuis 1
              an
            • Guitariste
INTRODUCTION


QU’EST-CE
QU’UNE « ROM
ALTERNATIVE »
?
QU’EST-CE QU’UNE ROM ?
QU’EST-CE QU’UNE ROM ?
QU’EST-CE QU’UNE ROM ?


                  Expérience Android « pure » disponible
                  sur les produits Nexus de Google




Expérience Android très souvent modifiée sur
les autres produits, via leurs surcouches
respectives
ET LES ROMS « CUSTOM » ALORS?

• Développées par la communauté
• Spécifiques à chaque produit
• 2 types de ROMs custom
   • Basées sur les ROMs constructeur
     (aka. « ROMs WinZip »)
   • Basées sur les sources d’Android
     (aka. « ROMs AOSP »)

• CyanogenMod, ROM AOSP la plus importante
• Beaucoup de ROMs dérivées de CyanogenMod
CYANOGENMOD

 • A l’origine de Steve « Cyanogen » Kondik
 • Propose des améliorations et des optimisations
   discrètes
 • Permet d’avoir un système toujours à jour
 • Plus de 140 périphériques supportés
 • Plus de 70 contributeurs actifs et des centaines de
   contributeurs occasionnels
 • Plus de 3,1 millions d’installations
 • 9000 installations par jour




Sources http://stats.cyanogenmod.com et http://changelog.bbqdroid.org
LA COMMUNAUTÉ CYANOGENMOD

• Tout le monde est libre de contribuer via Gerrit
   • http://review.cyanogenmod.com

• Forums, bien que XDA-Developers soit plus actif


• Changelog
   • http://changelog.bbqdroid.org

• Canaux IRC
   • irc.freenode.net #cyanogenmod
CYANOGENMOD ET SES MISES À JOUR

• La plupart des périphériques possèdent des « nightlies »
• Dépôts sont régulièrement mis à jour avec les
  changements de Google
• Une version majeure à chaque mise à jour majeure
  d’Android
   •   CM10 -> Android 4.1
   •   CM9 -> Android 4.0
   •   CM8 -> Android 3.0
   •   CM7 -> Android 2.3
   •   etc.
CYANOGENMOD ET SES MISES À JOUR

• Le temps de développement d’une version majeure varie
  :
   • Changements d’interface matérielle (HAL)
   • Changements dans le framework
   • Changements dans les applications

• Il était plus rapide de passer d’Android 2.2 à Android 2.3,
  que d’Android 2.3 à 4.0 :
   • En temps normal, les changements peuvent être ré-
     appliqués sur la nouvelle base de code
   • Ice Cream Sandwich apportait des changements
     radicaux à tous les niveaux
PARLONS TECHNIQUE


COMMENT
PORTER CM
SUR SON
TÉLÉPHONE?
VUE D’ENSEMBLE DU PROCESSUS

• Préparation du device tree, kernel, et fichiers
  propriétaires
• Compilation
• Premier boot
• Modules HAL
• Correction des bugs
• Correction des problèmes
• Publication vers les dépôts de CyanogenMod
LES OUTILS

• Le SDK Android (adb)


• Les sources d’Android (AOSP) et/ou CyanogenMod


• Un système à base UNIX (Linux ou Mac OS X)


• Un minimum d’expérience en système Linux


• Un périphérique Android au bootloader déverrouillé
PREMIÈRE ÉTAPE

• Préparation du device tree, kernel, et fichiers
  propriétaires



                                root




frameworks   device    kernel          vendor   build   …
LE « DEVICE TREE »

• Format device/constructeur/modèle
• Contient toutes les informations sur le périphérique
   • BoardConfig.mk
        •   Informations de partition, kernel, flags de
            compilation
   • Device.mk
        •   Nom du périphérique, type, fichiers spécifiques à
            compiler
   • init.board.rc
        •   Services et binaires à exécuter au démarrage
   • Dossier « overlay »
        •   Définit des paramètres spécifiques pour les
            applications système
LE « DEVICE TREE »

• Contient les modules spécifiques au périphérique
   • Modules HAL, wrappers
   • Optionnel
   • N’interviennent que plus tard dans le portage
• Contient les applications spécifiques au périphérique
   • DeviceSettings pour CyanogenMod
   • Ou toute autre application de configuration
     spécifique
LE KERNEL

• Les sources du kernel sont mises à disposition par les
  constructeurs
   • Les sources étant sous licence LGPL, tous les
     constructeurs sont obligés de les publier
   • Elles doivent être simplement copiées dans le dossier
     kernel/constructeur/modèle

• Il reste très souvent inchangé
   • En général, seule la « defconfig » est modifiée pour parfaire
     certains réglages

• Il peut être partagé entre plusieurs périphériques
FICHIERS PROPRIÉTAIRES
• Placés dans vendor/constructeur/modèle
• Listés dans proprietary-vendor.mk pour être copiés
• Librairies et binaires non open-source
   •   Radio
   •   Bibliothèques EGL
   •   Modules HAL (camera, gps, audio, …)
   •   Dépendances

• Certains constructeurs distribuent les sources de
  certains de ces fichiers
• Souvent la cause n°1 des bugs
COMPILATION

• Exemple pour le Galaxy S III (i9300)
   • . build/envsetup.sh
   • brunch i9300

   • lunch cm_i9300-userdebug

• Prévoyez quelque chose à faire de votre après-midi !
   • Sur un i7 3770K @ 4.3GHz et 8GB DDR3 1600Mhz, la
     compilation prend près de 20 minutes avec ccache
   • Plus de 45 minutes sans ccache
COMPILATION : TRUCS ET ASTUCES
• Recompiler juste un dossier (où se trouve un
  Android.mk)
   • mmm [-B] chemin/vers/dossier

• Supprimer les fichiers de sortie
   • make clobber

• Si vous n’utilisez pas brunch, pensez à –j <threads> !
   • make otapackage –j 12

• Vérifiez que vous utilisez ccache
   • ccache -s
COMPILATION : TRUCS ET ASTUCES

• Si votre périphérique a une partition Recovery dédiée
  (pas dans le ramdisk), pour créer l’image :
   • make recoveryimage –j 8



• De même, pour créer l’image de boot
   • make bootimage –j 8
PREMIER DÉMARRAGE

   Pas de    Le téléphone reste bloqué sur l’écran du chargeur de
   chance    démarrage



   Un peu
             Le téléphone affiche un écran noir et rien ne se passe
  chanceux


    Très     L’animation de démarrage s’affiche mais le démarrage
  chanceux   ne se termine pas (bootloop)



  Jouez au   Vous voyez l’animation de démarrage et le launcher,
    loto !   félicitations !
PREMIER DÉMARRAGE

• Le téléphone reste bloqué sur l’écran du chargeur de
  démarrage
   • Si adb ne détecte rien, il y a un problème de kernel
   • Si adb le détecte, la ROM est incomplète

• Le téléphone affiche un écran noir et rien ne se passe
   •   Voir ce que le logcat raconte
   •   Souvent dû à des fichiers propriétaires manquants
   •   Peut être dû à un init.<board>.rc incomplet
   •   Ou à un build.prop invalide (mauvaises permissions, DPI
       incorrect, etc.)
PREMIER DÉMARRAGE

• L’animation de démarrage s’affiche mais le démarrage ne se
  termine pas (bootloop)
   • Un service qui est attendu, et qui ne se lance pas
   • /data qui n’a pas été effacé !!!!!!!!!!
   • Une bibliothèque qui fait planter un service système,
     redémarre en boucle

• Vous voyez l’animation de démarrage et le launcher,
  félicitations !
   • Maintenant avouez que c’était un Nexus
DEBUG : TRUCS ET ASTUCES

• Retenez bien cette commande : adb logcat
   • (ou adb lolcat, ça marche aussi)


• Si le recovery est contenu dans le ramdisk, gardez
  toujours une image de côté


• Il n’y a pas de problèmes pour démarrer sans modules
  HAL


• N’ayez pas peur de bricoler
   • Il y a du dead code dans tous les produits Samsung
CA DÉMARRE ! ET MAINTENANT ?

• Testez chaque fonctionnalité
   • Constatez que le Wi-Fi ne fonctionne pas, les vidéos ne
     se jouent pas, la carte SIM n’est pas détectée, il n’y a
     pas de son, la caméra ne fonctionne pas, …

• La plupart des fonctions manquantes sont dues aux
  fichiers propriétaires
   • Scrutez le logcat (surtout les premières lignes)
     pour des erreurs (surtout link_error
   • Pensez aussi au kmsg (log kernel)
HISTOIRES VÉCUES : LE WI-FI NE MARCHE
PAS

• Les modules Broadcom en particulier utilisent des
  fichiers de configuration
   • Si ils sont invalides ou pas présent, la puce n’est pas
     initialisée
   • De même, le driver est un module du kernel, vérifiez
     qu’il est compilé et au bon endroit

• Certains produits utilisent plusieurs puces pour le même
  modèle (bonjour Galaxy S III !)
   • Il faut alors charger la bonne configuration pour
     chaque puce
   • Fort heureusement, ils ont un préfixe MAC distinct
HISTOIRES VÉCUES : IL N’Y A PAS DE
SON

• En général, l’HAL audio est une simple interface entre
  tinyalsa et Android


• Il est parfaitement possible d’adapter l’HAL du Galaxy
  Nexus ou Nexus 7
   • C’est ce qui a été fait pour le Galaxy S III


• En revanche, certains contrôleurs ne sont pas
  compatible tinyalsa
   • Pleurez et bricolez pour faire marcher la
     bibliothèque propriétaire ! (Bonjour Galaxy S II et
     Galaxy Note !)
HISTOIRES VÉCUES : IMPOSSIBLE DE LIRE
LA VIDÉO

• Chaque SoC possède sa méthode d’accélération vidéo et
  donc ses codecs
   • Il existe des codecs logiciels, mais sont très lents
     puisqu’ils dépendent purement du CPU
   • Les codecs sont de simples bibliothèques, contrôlées
     par un composant central (libstagefrighthw.so en
     temps normal)

• Depuis Jelly Bean, il existe un fichier
  « media_codecs.xml »
   • Avant, il fallait modifier libstagefright
   • Depuis, il n’y a qu’à modifier le fichier XML et ajouter
     le nom du codec en tête de liste
HISTOIRES VÉCUES : IMPOSSIBLE DE LIRE
LA VIDÉO

• Certains constructeurs ont mis en place des
  interopérations
   • Les codecs vidéos peuvent interagir avec la sortie
     HDMI par exemple
   • Il faut alors modifier le comportement du système
   • …ou du moins le simuler

• Tous les formats de vidéo ne sont pas supportés par
  l’AOSP
   • Surtout les formats propriétaires, comme le WMV
   • Testez avec YouTube, c’est plus sûr
HISTOIRES VÉCUES : L’APPAREIL PHOTO
FONCTIONNE MAL

• Chaque capteur possède ses propres caractéristiques
    • L’AOSP en supporte pas mal, mais en général
      davantage sont disponibles
    • Ils peuvent être listés en utilisant un wrapper
        https://github.com/cyanogenmod/android_device_samsung_
        i9300


•   Si vous constatez des erreurs, des plantages, utilisez un
    wrapper
    •   Il nous a fallu désactiver deux fonctions sur le Galaxy S III

•   N’hésitez pas à utiliser votre wrapper sur les ROMs officielles
    •   Comparez les opérations faites par la ROM et par l’AOSP
        pour trouver ce qui coince
HISTOIRES VÉCUES : IMPOSSIBLE DE
FILMER

• Comme dit, comparez !
   • Sur le Galaxy S II, il y a un paramètre spécifique pour
     la vidéo



• L’enregistrement vidéo utilise les codecs vidéo
   • Si vous n’arrivez pas à lire de vidéo
     correctement, n’espérez pas en enregistrer
   • Gardez un œil sur le logcat, mais aussi le log kernel
HISTOIRES VÉCUES : IMPOSSIBLE
D’INSTALLER CERTAINES APPLICATIONS

• Certains applications utilisent l’Android Secure
  Container (asec)
   • Il s’agit d’un répertoire sécurisé monté dans le
      système de fichiers
   • Il est monté par l’init.<board>.rc
   • Vérifiez que vold ne renvoie pas d’erreurs et que
      /mnt/asec existe
• Si la carte SD n’est pas correctement
  configurée, l’installation peut échouer
   • Vérifiez les overlay dans le device tree
   • Essayez de prendre une photo ou d’ouvrir la gallerie
PUBLIER VERS CYANOGENMOD

• Pré-requis
   • Compilable et fonctionnel directement
   • Sources, kernel et proprietary sur GitHub


• Effectuer une requête par Gerrit
   • Ajouter son device au fichier CHANGELOG.mkdn
   • Préciser les dépôts à cloner
ET APRÈS ?

• Maintenir son portage
   • Mises à jour du kernel
   • Mises à jour des fichiers propriétaires


• Se maintenir à jour avec l’upstream
   • Mises à jour majeures d’Android
CONCLUSION

• Les ROMs alternatives sont parfois meilleures que les
  ROMs officielles


• CyanogenMod est la ROM la plus populaire, complète et
  structurée


• Après les distributions Linux, la communauté de
  développeurs la plus active
QUELQUES LIENS…

• www.teamhacksung.org
• www.cyanogenmod.com
• forum.xda-developers.com
• changelog.bbqdroid.org
• www.github.com/cyanogenmod


• #teamhacksung @ irc.freenode.net
• #cyanogenmod-dev @ irc.freenode.net
MERCI ! DES QUESTIONS ?

Weitere ähnliche Inhalte

Ähnlich wie Android distribution cyanogen mod _ guillaume lesniak, student at miage nancy

16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...JustoLetontonGentil
 
16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...JustoLetontonGentil
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
Systemes d'explotation: Systèmes embarquées
Systemes d'explotation: Systèmes embarquéesSystemes d'explotation: Systèmes embarquées
Systemes d'explotation: Systèmes embarquéesAlexandru Radovici
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Pc ou ordinateur lent windows très lent au démarrage
Pc ou ordinateur lent   windows très lent au démarragePc ou ordinateur lent   windows très lent au démarrage
Pc ou ordinateur lent windows très lent au démarrageDICKO Yacouba
 
Lab devtalk
Lab devtalkLab devtalk
Lab devtalks_wool
 
Exposé sur le BIOS tout savoir sur le bios.pdf
Exposé sur le BIOS tout savoir sur le bios.pdfExposé sur le BIOS tout savoir sur le bios.pdf
Exposé sur le BIOS tout savoir sur le bios.pdfMouhamedFall30
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotiqueMicrosoft
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenableLeTesteur
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Delair t soutenance-final
Delair t soutenance-finalDelair t soutenance-final
Delair t soutenance-finaldelair_t
 

Ähnlich wie Android distribution cyanogen mod _ guillaume lesniak, student at miage nancy (20)

SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
17. Le DOS.pdf
17. Le DOS.pdf17. Le DOS.pdf
17. Le DOS.pdf
 
16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...
 
16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...16. Le BIOS   et ses role principales dans le fonctionnement de de l'ordinate...
16. Le BIOS et ses role principales dans le fonctionnement de de l'ordinate...
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Systemes d'explotation: Systèmes embarquées
Systemes d'explotation: Systèmes embarquéesSystemes d'explotation: Systèmes embarquées
Systemes d'explotation: Systèmes embarquées
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Pc ou ordinateur lent windows très lent au démarrage
Pc ou ordinateur lent   windows très lent au démarragePc ou ordinateur lent   windows très lent au démarrage
Pc ou ordinateur lent windows très lent au démarrage
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
 
Lab devtalk
Lab devtalkLab devtalk
Lab devtalk
 
Javaoop
JavaoopJavaoop
Javaoop
 
Exposé sur le BIOS tout savoir sur le bios.pdf
Exposé sur le BIOS tout savoir sur le bios.pdfExposé sur le BIOS tout savoir sur le bios.pdf
Exposé sur le BIOS tout savoir sur le bios.pdf
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
Paug aosp ice-creamsandwich_20120119
Paug aosp ice-creamsandwich_20120119Paug aosp ice-creamsandwich_20120119
Paug aosp ice-creamsandwich_20120119
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Delair t soutenance-final
Delair t soutenance-finalDelair t soutenance-final
Delair t soutenance-final
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
 

Mehr von Paris Open Source Summit

#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...Paris Open Source Summit
 
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...Paris Open Source Summit
 
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...Paris Open Source Summit
 
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, ArduinoParis Open Source Summit
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...Paris Open Source Summit
 
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...Paris Open Source Summit
 
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, ZabbixParis Open Source Summit
 
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, InriaParis Open Source Summit
 
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...Paris Open Source Summit
 
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...Paris Open Source Summit
 
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...Paris Open Source Summit
 
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...Paris Open Source Summit
 
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...Paris Open Source Summit
 
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...Paris Open Source Summit
 
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...Paris Open Source Summit
 
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...Paris Open Source Summit
 
#OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données #OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données Paris Open Source Summit
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...Paris Open Source Summit
 
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...Paris Open Source Summit
 
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...Paris Open Source Summit
 

Mehr von Paris Open Source Summit (20)

#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
 
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
 
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
 
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
 
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
 
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
 
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
 
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
 
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
 
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
 
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
 
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
 
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
 
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
 
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
 
#OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données #OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
 
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
 
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
 

Android distribution cyanogen mod _ guillaume lesniak, student at miage nancy

  • 1. ANDROID INTERNALS ANDROID ET SES ROMS ALTERNATIVES GUILLAUME LESNIAK – OPENWORLDFORUM 2012
  • 2. A PROPOS DE MOI • Etudiant en L3 MIAGE ISC • Programmeur C/C++/JavaScript/PHP • Développeur de jeux 3D depuis 4 ans • Développeur CyanogenMod depuis 1 an • Guitariste
  • 6. QU’EST-CE QU’UNE ROM ? Expérience Android « pure » disponible sur les produits Nexus de Google Expérience Android très souvent modifiée sur les autres produits, via leurs surcouches respectives
  • 7. ET LES ROMS « CUSTOM » ALORS? • Développées par la communauté • Spécifiques à chaque produit • 2 types de ROMs custom • Basées sur les ROMs constructeur (aka. « ROMs WinZip ») • Basées sur les sources d’Android (aka. « ROMs AOSP ») • CyanogenMod, ROM AOSP la plus importante • Beaucoup de ROMs dérivées de CyanogenMod
  • 8. CYANOGENMOD • A l’origine de Steve « Cyanogen » Kondik • Propose des améliorations et des optimisations discrètes • Permet d’avoir un système toujours à jour • Plus de 140 périphériques supportés • Plus de 70 contributeurs actifs et des centaines de contributeurs occasionnels • Plus de 3,1 millions d’installations • 9000 installations par jour Sources http://stats.cyanogenmod.com et http://changelog.bbqdroid.org
  • 9. LA COMMUNAUTÉ CYANOGENMOD • Tout le monde est libre de contribuer via Gerrit • http://review.cyanogenmod.com • Forums, bien que XDA-Developers soit plus actif • Changelog • http://changelog.bbqdroid.org • Canaux IRC • irc.freenode.net #cyanogenmod
  • 10. CYANOGENMOD ET SES MISES À JOUR • La plupart des périphériques possèdent des « nightlies » • Dépôts sont régulièrement mis à jour avec les changements de Google • Une version majeure à chaque mise à jour majeure d’Android • CM10 -> Android 4.1 • CM9 -> Android 4.0 • CM8 -> Android 3.0 • CM7 -> Android 2.3 • etc.
  • 11. CYANOGENMOD ET SES MISES À JOUR • Le temps de développement d’une version majeure varie : • Changements d’interface matérielle (HAL) • Changements dans le framework • Changements dans les applications • Il était plus rapide de passer d’Android 2.2 à Android 2.3, que d’Android 2.3 à 4.0 : • En temps normal, les changements peuvent être ré- appliqués sur la nouvelle base de code • Ice Cream Sandwich apportait des changements radicaux à tous les niveaux
  • 13. VUE D’ENSEMBLE DU PROCESSUS • Préparation du device tree, kernel, et fichiers propriétaires • Compilation • Premier boot • Modules HAL • Correction des bugs • Correction des problèmes • Publication vers les dépôts de CyanogenMod
  • 14. LES OUTILS • Le SDK Android (adb) • Les sources d’Android (AOSP) et/ou CyanogenMod • Un système à base UNIX (Linux ou Mac OS X) • Un minimum d’expérience en système Linux • Un périphérique Android au bootloader déverrouillé
  • 15. PREMIÈRE ÉTAPE • Préparation du device tree, kernel, et fichiers propriétaires root frameworks device kernel vendor build …
  • 16. LE « DEVICE TREE » • Format device/constructeur/modèle • Contient toutes les informations sur le périphérique • BoardConfig.mk • Informations de partition, kernel, flags de compilation • Device.mk • Nom du périphérique, type, fichiers spécifiques à compiler • init.board.rc • Services et binaires à exécuter au démarrage • Dossier « overlay » • Définit des paramètres spécifiques pour les applications système
  • 17. LE « DEVICE TREE » • Contient les modules spécifiques au périphérique • Modules HAL, wrappers • Optionnel • N’interviennent que plus tard dans le portage • Contient les applications spécifiques au périphérique • DeviceSettings pour CyanogenMod • Ou toute autre application de configuration spécifique
  • 18. LE KERNEL • Les sources du kernel sont mises à disposition par les constructeurs • Les sources étant sous licence LGPL, tous les constructeurs sont obligés de les publier • Elles doivent être simplement copiées dans le dossier kernel/constructeur/modèle • Il reste très souvent inchangé • En général, seule la « defconfig » est modifiée pour parfaire certains réglages • Il peut être partagé entre plusieurs périphériques
  • 19. FICHIERS PROPRIÉTAIRES • Placés dans vendor/constructeur/modèle • Listés dans proprietary-vendor.mk pour être copiés • Librairies et binaires non open-source • Radio • Bibliothèques EGL • Modules HAL (camera, gps, audio, …) • Dépendances • Certains constructeurs distribuent les sources de certains de ces fichiers • Souvent la cause n°1 des bugs
  • 20. COMPILATION • Exemple pour le Galaxy S III (i9300) • . build/envsetup.sh • brunch i9300 • lunch cm_i9300-userdebug • Prévoyez quelque chose à faire de votre après-midi ! • Sur un i7 3770K @ 4.3GHz et 8GB DDR3 1600Mhz, la compilation prend près de 20 minutes avec ccache • Plus de 45 minutes sans ccache
  • 21. COMPILATION : TRUCS ET ASTUCES • Recompiler juste un dossier (où se trouve un Android.mk) • mmm [-B] chemin/vers/dossier • Supprimer les fichiers de sortie • make clobber • Si vous n’utilisez pas brunch, pensez à –j <threads> ! • make otapackage –j 12 • Vérifiez que vous utilisez ccache • ccache -s
  • 22. COMPILATION : TRUCS ET ASTUCES • Si votre périphérique a une partition Recovery dédiée (pas dans le ramdisk), pour créer l’image : • make recoveryimage –j 8 • De même, pour créer l’image de boot • make bootimage –j 8
  • 23. PREMIER DÉMARRAGE Pas de Le téléphone reste bloqué sur l’écran du chargeur de chance démarrage Un peu Le téléphone affiche un écran noir et rien ne se passe chanceux Très L’animation de démarrage s’affiche mais le démarrage chanceux ne se termine pas (bootloop) Jouez au Vous voyez l’animation de démarrage et le launcher, loto ! félicitations !
  • 24. PREMIER DÉMARRAGE • Le téléphone reste bloqué sur l’écran du chargeur de démarrage • Si adb ne détecte rien, il y a un problème de kernel • Si adb le détecte, la ROM est incomplète • Le téléphone affiche un écran noir et rien ne se passe • Voir ce que le logcat raconte • Souvent dû à des fichiers propriétaires manquants • Peut être dû à un init.<board>.rc incomplet • Ou à un build.prop invalide (mauvaises permissions, DPI incorrect, etc.)
  • 25. PREMIER DÉMARRAGE • L’animation de démarrage s’affiche mais le démarrage ne se termine pas (bootloop) • Un service qui est attendu, et qui ne se lance pas • /data qui n’a pas été effacé !!!!!!!!!! • Une bibliothèque qui fait planter un service système, redémarre en boucle • Vous voyez l’animation de démarrage et le launcher, félicitations ! • Maintenant avouez que c’était un Nexus
  • 26. DEBUG : TRUCS ET ASTUCES • Retenez bien cette commande : adb logcat • (ou adb lolcat, ça marche aussi) • Si le recovery est contenu dans le ramdisk, gardez toujours une image de côté • Il n’y a pas de problèmes pour démarrer sans modules HAL • N’ayez pas peur de bricoler • Il y a du dead code dans tous les produits Samsung
  • 27. CA DÉMARRE ! ET MAINTENANT ? • Testez chaque fonctionnalité • Constatez que le Wi-Fi ne fonctionne pas, les vidéos ne se jouent pas, la carte SIM n’est pas détectée, il n’y a pas de son, la caméra ne fonctionne pas, … • La plupart des fonctions manquantes sont dues aux fichiers propriétaires • Scrutez le logcat (surtout les premières lignes) pour des erreurs (surtout link_error • Pensez aussi au kmsg (log kernel)
  • 28. HISTOIRES VÉCUES : LE WI-FI NE MARCHE PAS • Les modules Broadcom en particulier utilisent des fichiers de configuration • Si ils sont invalides ou pas présent, la puce n’est pas initialisée • De même, le driver est un module du kernel, vérifiez qu’il est compilé et au bon endroit • Certains produits utilisent plusieurs puces pour le même modèle (bonjour Galaxy S III !) • Il faut alors charger la bonne configuration pour chaque puce • Fort heureusement, ils ont un préfixe MAC distinct
  • 29. HISTOIRES VÉCUES : IL N’Y A PAS DE SON • En général, l’HAL audio est une simple interface entre tinyalsa et Android • Il est parfaitement possible d’adapter l’HAL du Galaxy Nexus ou Nexus 7 • C’est ce qui a été fait pour le Galaxy S III • En revanche, certains contrôleurs ne sont pas compatible tinyalsa • Pleurez et bricolez pour faire marcher la bibliothèque propriétaire ! (Bonjour Galaxy S II et Galaxy Note !)
  • 30. HISTOIRES VÉCUES : IMPOSSIBLE DE LIRE LA VIDÉO • Chaque SoC possède sa méthode d’accélération vidéo et donc ses codecs • Il existe des codecs logiciels, mais sont très lents puisqu’ils dépendent purement du CPU • Les codecs sont de simples bibliothèques, contrôlées par un composant central (libstagefrighthw.so en temps normal) • Depuis Jelly Bean, il existe un fichier « media_codecs.xml » • Avant, il fallait modifier libstagefright • Depuis, il n’y a qu’à modifier le fichier XML et ajouter le nom du codec en tête de liste
  • 31. HISTOIRES VÉCUES : IMPOSSIBLE DE LIRE LA VIDÉO • Certains constructeurs ont mis en place des interopérations • Les codecs vidéos peuvent interagir avec la sortie HDMI par exemple • Il faut alors modifier le comportement du système • …ou du moins le simuler • Tous les formats de vidéo ne sont pas supportés par l’AOSP • Surtout les formats propriétaires, comme le WMV • Testez avec YouTube, c’est plus sûr
  • 32. HISTOIRES VÉCUES : L’APPAREIL PHOTO FONCTIONNE MAL • Chaque capteur possède ses propres caractéristiques • L’AOSP en supporte pas mal, mais en général davantage sont disponibles • Ils peuvent être listés en utilisant un wrapper https://github.com/cyanogenmod/android_device_samsung_ i9300 • Si vous constatez des erreurs, des plantages, utilisez un wrapper • Il nous a fallu désactiver deux fonctions sur le Galaxy S III • N’hésitez pas à utiliser votre wrapper sur les ROMs officielles • Comparez les opérations faites par la ROM et par l’AOSP pour trouver ce qui coince
  • 33. HISTOIRES VÉCUES : IMPOSSIBLE DE FILMER • Comme dit, comparez ! • Sur le Galaxy S II, il y a un paramètre spécifique pour la vidéo • L’enregistrement vidéo utilise les codecs vidéo • Si vous n’arrivez pas à lire de vidéo correctement, n’espérez pas en enregistrer • Gardez un œil sur le logcat, mais aussi le log kernel
  • 34. HISTOIRES VÉCUES : IMPOSSIBLE D’INSTALLER CERTAINES APPLICATIONS • Certains applications utilisent l’Android Secure Container (asec) • Il s’agit d’un répertoire sécurisé monté dans le système de fichiers • Il est monté par l’init.<board>.rc • Vérifiez que vold ne renvoie pas d’erreurs et que /mnt/asec existe • Si la carte SD n’est pas correctement configurée, l’installation peut échouer • Vérifiez les overlay dans le device tree • Essayez de prendre une photo ou d’ouvrir la gallerie
  • 35. PUBLIER VERS CYANOGENMOD • Pré-requis • Compilable et fonctionnel directement • Sources, kernel et proprietary sur GitHub • Effectuer une requête par Gerrit • Ajouter son device au fichier CHANGELOG.mkdn • Préciser les dépôts à cloner
  • 36. ET APRÈS ? • Maintenir son portage • Mises à jour du kernel • Mises à jour des fichiers propriétaires • Se maintenir à jour avec l’upstream • Mises à jour majeures d’Android
  • 37. CONCLUSION • Les ROMs alternatives sont parfois meilleures que les ROMs officielles • CyanogenMod est la ROM la plus populaire, complète et structurée • Après les distributions Linux, la communauté de développeurs la plus active
  • 38. QUELQUES LIENS… • www.teamhacksung.org • www.cyanogenmod.com • forum.xda-developers.com • changelog.bbqdroid.org • www.github.com/cyanogenmod • #teamhacksung @ irc.freenode.net • #cyanogenmod-dev @ irc.freenode.net
  • 39. MERCI ! DES QUESTIONS ?

Hinweis der Redaktion

  1. Il existe une multitude de téléphones ayant pour point commun le système Android.Pourtant, chacun possède une UI/UX différente
  2. Puisque Google autorise les modifications du système, chacun fait sa sauce et peut la vendre, à condition que les apps tournentOn peut facilement remarquer les différences et les similitudes, surtout comparé à l’AOSP
  3. L’expérience android pure est dispo via les nexus de google, et la majorité des autres produits Android ont très souvent une interface modifiée (surcouche)par les constructeurs et les opérateurs
  4. CM a été developpé à la base par Cyanogen, pour le HTC magic dans le but d’offrir quelques fonctions en + et des perfs amélioréesToujours à jour des sources de Google et des releases majeures140 périphériques supportés (càd en nightly, toutes versions de CM confondues)3,1 millions d’installations dont 1,4 millions par des releases officielles et 1,7 millions non-officielles (compilé soi même etc)
  5. Je pars sur le principe que vous avez un minimum de connaissances dans l’univers Linux et Android
  6. Il s’agit des libs et binaires nécessaires au bon fonctionnement du périphérique et de ses fonctionsSouvent la cause #1 des bugs puisque les constructeurs adaptent les sources d’Android à leurs modules plutôtque leurs modules aux sources, donc il faut bricoler
  7. Deux commandes suffisent à lancer la compilationLes messages d’erreurs sont plutôt explicites, parfois pasIl faut savoir que les espacements et les commentaires dans les fichiers .mk sont très stricts
  8. -j xx marche aussi avec repo sync, mais bon évitez de tuer github
  9. -j xx marche aussi avec repo sync, mais bon évitez de tuer github
  10. 1er point : on va commencer à s’amuser à supprimer et ajouter des fichiers prop jusqu’à arriver àle faire booter. Armez vous de patience, et surtout d’adblogcat