Aller au contenu

Création de ROM personnalisée - Gingerbread (2.3.x)


Recommended Posts

Bonjour,

Je suis développeur et je souhaiterais me lancer dans la création d'une ROM Android. Par réflexe, je me suis donc rendu sur le site de AOSP afin de suivre leur documentation afin de me monter un environnement de développement Android (sous GNU/Linux Ubuntu 11.04).

Cette procédure ne fonctionne pas encore (problème de récupération des sources depuis GIT avec le script repo). Ma question ne concerne pas cette partie, je finirai bien par trouver.

La question que je me pose plus particulièrement, c'est une fois ces sources récupérées, quelle est la démarche pour construire une ROM fonctionnelle pour le HTC Desire. J'imagine que chaque terminal doit inclure ses drivers dans la ROM (radio, apn, écran, cpu...). Je vois un nombre d'outil considérable à la "Android Cooking", mais aucune documentation (à ma connaissance) sur la démarche pour faire les choses soit-même.

Pour être clair, mon but n'est pas de créer une Xième ROM et me lancer sur le marché. Je cherche à me faire une ROM qui répondra exactement à mes besoins, aussi légère que possible (bon, la vraie raison, c'est peut-être aussi parce que ce genre de bidouilles me passionnent, et que faire ce genre de choses me plait beaucoup... :P).

Pour résumé ma situation actuelle :

  • Environnement de développement : GNU/Linux Ubuntu 11.04 (pré-requis Google installés)
  • Cible : HTC Desire (ROM Stock 2.29 rooted / HBOOT 0.93 S-Off)
  • Récupération des sources AOSP en cours

Je prévois également de flasher la radio. Est-ce que ce choix doit être réfléchit l'élaboration de la ROM où est-ce que c'est complètement indépendant ? Est-ce qu'une ROM remplace la radio ?

Mon choix se porterait vers la 32.54.00.32U_5.14.05.17, qui n'est pas la dernière mais semble être tout à fait un bon compromis entre autonomie et efficacité !

Je suis ouvert pour tous vos conseils / propositions. Merci d'avance !

--

Liens :

Modifié par rclsilver
Lien vers le commentaire
Partager sur d’autres sites

Salut,

Je n'y connais rien en développement de rom depuis l'AOSP, mais tu peux prendre conseil sur XDA, et t'inspirer de l'excellent travail du développeur de la rom Oxygen, qui a mis les sources complètes de ses deux roms (Oxygen et Devnull) en ligne ici : http://gitweb.oxygen.im/

Ton projet m'intéresse beaucoup, donc donne nous des nouvelles ici aussi souvent que possible stp ;)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Juste au cas ou tu ne le saurais pas, il me semble que depuis gingerbread il te faut linux 64 bits pour pouvoir compiler tes sources!

Sinon je ne peux que t'encourager dans ta démarche, j'aime bien aussi ce genre de bidouille mais j'ai pas trop les connaissances nécessaires :)

Bon courage!!

Lien vers le commentaire
Partager sur d’autres sites

Ah ah ! Intéressant ! Effectivement, je ne savais pas du tout. Heureusement pour moi, mon linux 64 bits 8 cores m'aidera dans ma tâche !

Pour ce qui est de la récupération des sources Android, j'ai avancé, ça télécharge.

Pour info, j'ai utilisé la commande suivante :

repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ;

Je ne sais pas encore si ça répond à mon besoin lol

Edit: d'après les sorties d'écran, ça choppe tout le dépôt android, toutes versions publiées. Quelque chose me dit que j'ai pas fini, lol

Modifié par rclsilver
Lien vers le commentaire
Partager sur d’autres sites

Très bon lien oui, j'étais tombé dessus. Je l'ai mis dans mon premier post, histoire de faire un bilan au fur et à mesure. Cette partie là explique bien la compilation, moins la partie concernant HTC Desire.

Pour le -b, oui je savais, là, au moins, j'aurais tout, lol. Le téléchargement est toujours en cours, les serveurs git sont pas très gentils, ils donnent pas un débit énorme

Lien vers le commentaire
Partager sur d’autres sites

J'avais ce lien aussi ou il parle rapidement pour le htc desire je sais pas si ça te fera avancer ou même correspondra vu que là c'est à partir des sources cyanogen : http://canardroid.com/wiki/doku.php?id=build_cyanogenmod

Après je n'ai pas été plus loin ne pouvant faire marcher linux 64 bits sur mon ancien pc et vu que c'était par simple curiosité et que j'ai pas envie de mettre linux en dual boot avec windows pour pas me prendre la tête avec le MBR lors de la désinstallation de linux ^^

Effectivemment j'ai le souvenirs que les serveurs sont pas très rapide, bon courage ;)

En tout cas si tu donnes souvent des news je passerai sur ce topic de temps en temps!

Modifié par Ninho
Lien vers le commentaire
Partager sur d’autres sites

Le téléchargement des sources est terminé.

Par contre, ça ne compile pas. Afin d'avoir une évolution tracée, je copie les logs, et je mettrai la résolution dès que j'aurai réussi

thomas@thomas-asus:~/Android/system$ make -j 9
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=AOSP
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv5te
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
find: "frameworks/base/frameworks/base/docs/html": Aucun fichier ou dossier de ce type
find: "out/target/common/docs/gen": Aucun fichier ou dossier de ce type
find: "frameworks/base/frameworks/base/docs/html": Aucun fichier ou dossier de ce type
find: "out/target/common/docs/gen": Aucun fichier ou dossier de ce type
find: "frameworks/base/frameworks/base/docs/html": Aucun fichier ou dossier de ce type
find: "out/target/common/docs/gen": Aucun fichier ou dossier de ce type
find: "frameworks/base/frameworks/base/docs/html": Aucun fichier ou dossier de ce type
find: "out/target/common/docs/gen": Aucun fichier ou dossier de ce type
find: "frameworks/base/frameworks/base/docs/html": Aucun fichier ou dossier de ce type
find: "out/target/common/docs/gen": Aucun fichier ou dossier de ce type
host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c
host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_cs.c
host Executable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp)
host C: libneo_cgi <= external/clearsilver/cgi/cgi.c
host C: libneo_cgi <= external/clearsilver/cgi/html.c
host C: libneo_cgi <= external/clearsilver/cgi/date.c
host SharedLib: libneo_util (out/host/linux-x86/obj/lib/libneo_util.so)
host C: libneo_cgi <= external/clearsilver/cgi/rfc2388.c
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] Erreur 1
make: *** Attente des tâches non terminées....

Correction : installation des packages ubuntu suivants git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev pngcrush g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev

Modifié par rclsilver
Lien vers le commentaire
Partager sur d’autres sites

J'avais ce lien aussi ou il parle rapidement pour le htc desire je sais pas si ça te fera avancer ou même correspondra vu que là c'est à partir des sources cyanogen : http://canardroid.com/wiki/doku.php?id=build_cyanogenmod

Après je n'ai pas été plus loin ne pouvant faire marcher linux 64 bits sur mon ancien pc et vu que c'était par simple curiosité et que j'ai pas envie de mettre linux en dual boot avec windows pour pas me prendre la tête avec le MBR lors de la désinstallation de linux ^^

Effectivemment j'ai le souvenirs que les serveurs sont pas très rapide, bon courage ;)

En tout cas si tu donnes souvent des news je passerai sur ce topic de temps en temps!

Ton lien est très intéressant ! Ils disent comment récupérer les parties spécifiques au téléphone / modèle. D'après ce que j'ai compris, ils récupèrent les fichiers propriétaires depuis le téléphone directement. Le problème maintenant, c'est de savoir si ces fichiers doivent être mis à jour en fonction de la version d'Android.

Edit : à priori, dans le checkout de AOSP tout à l'heure, le dossier <source root>/device/htc/bravo (htc desire) n'existe pas. Je vais voir si je peux récupérer celui présent dans CyanogenMod et l'utiliser pour l'AOSP...

J'attends la fin de ma compilation "nue" avant de faire ce test.

Modifié par rclsilver
Lien vers le commentaire
Partager sur d’autres sites

Succès !

Premier build OK dans un émulateur :

Android_Build01_Emulator.png

Pour résumer cette première étape :

Je n'aurais pas le temps avant quelques jours de faire de nouvelles compilations (notamment avec les fichiers propriétaires HTC). Je me documenterai et posterai ici si je trouve quelque chose.

N'hésitez pas pour les intéressés !

Lien vers le commentaire
Partager sur d’autres sites

Ca avance bien, bonnes nouvelles :)

Et merci pour tes retours, c'est encourageant !

Lien vers le commentaire
Partager sur d’autres sites

Ah ca c'est bien, en attendant de voir avec les fichiers propriétaire ce que ça peut donner!

En tout cas ça peut être un bon topic car il y a très peu d'info en français sur la création de rom à partir des sources.

Lien vers le commentaire
Partager sur d’autres sites

Yes, j'en suis conscient !

Pour les fichiers propriétaires, j'ai une piste : choper les fichiers depuis une ROM existante. Par contre, la question que je me pose c'est comment eux les chopent au début ?

Je sais qu'il y a eu une fuite d'une ROM gingerbread en tests pour le HTC Desire, je pourrais peut etre les choper de cette ROM aussi.

Je vous tiens au courant !

Je recompilerai ce weekend avec ces fichiers propriétaires afin de tester.

Si quelqu'un a des infos là-dessus, ça sera avec plaisir !

Lien vers le commentaire
Partager sur d’autres sites

Je ne sais pas si tu es au courant que HTC publie les sources de ses kernel ?

Ca se passe ici : http://developer.htc.com/

Je ne sais pas si ca peut t'aider étant donné qu'il n'y a pour le moment que les sources pour les ROM 2.1 mais ca peut servir de base.

Ici tu pourra trouver les sources du kernel modifié par sqn (peut être le dernier développeur à travailler sur le kernel du Desire...) : https://github.com/snq-/bravo-kernel

Mais je suis un peu surpris que les deniers commit soit si ancien alors qu'il a publié des modifs dernièrement pour le kernel Gingerbread... Ya plus d'infos là : http://forum.xda-developers.com/showthread.php?t=1039004

Quelques infos sur les RIL ici : http://forum.xda-developers.com/showthread.php?t=902752

En tout cas bon courage. J'avoue que j'ai été tenté plusieurs fois de m'y mettre également puis finalement j'ai pas eu le courage ^^

Modifié par Kiiv
Lien vers le commentaire
Partager sur d’autres sites

Ce que je ne comprends pas, c'est le fait d'avoir un kernel par terminal. Je pensais (peut être à tort) qu'il suffisait d'inclure dans le kernel générique les fichiers propres au terminal (drivers, librairies spécifiques...).

Après, peut-être qu'il y a des optimisation à effectuer en fonction du terminal, ce qui expliquerait de fork du kernel original...

Lien vers le commentaire
Partager sur d’autres sites

Ba... Si tu inclus des fichiers propres au terminal dans le kernel générique, ca te donne des kernels spécifiques pour chaque terminal, non ? ;)

C'est comme n'importe quelle distrib linux, si je compile un kernel pour ma machine il ne fonctionnera pas pour la tienne même si on veux tout les deux faire tourner Ubuntu :/

Lien vers le commentaire
Partager sur d’autres sites

Oui ça ok, je suis d'accord. Mais je trouve ça troublant de faire un fork complet du kernel, juste pour ajouter quelques fichiers spécifiques au terminal. Un patch du GIT AOSP aurait été à mon sens peut-être plus pratique. Ce n'est qu'une supposition.

Pour ce qui est de faire un build par terminal... Ca, on est tous d'accord que c'est indispensable, il n'a jamais été question de faire sans, lol

Lien vers le commentaire
Partager sur d’autres sites

Non, le recovery n'est pas touché par le flash d'une rom. La radio non plus, sauf dans le cas des RUU qui flashent le module radio à la volée.

Donc tu peux faire un backup de ta rom actuelle en recovery, flasher ta nouvelle rom, et revenir restaurer l'ancienne après tests ;)

Lien vers le commentaire
Partager sur d’autres sites

Oui ça ok, je suis d'accord. Mais je trouve ça troublant de faire un fork complet du kernel, juste pour ajouter quelques fichiers spécifiques au terminal. Un patch du GIT AOSP aurait été à mon sens peut-être plus pratique. Ce n'est qu'une supposition.

Pour ce qui est de faire un build par terminal... Ca, on est tous d'accord que c'est indispensable, il n'a jamais été question de faire sans, lol

Si tu parle du fork de Snq-, il y a bien plus que "quelques fichiers spécifiques au terminal". Il y a beaucoup de tweak pour améliorer les perfs (OC etc), petites modifs pour ajouter des fonctionnalités (trackpad to unlock) et bien d'autres choses que je ne comprend même pas :emo_im_foot_in_mouth:

Lien vers le commentaire
Partager sur d’autres sites

Dans ce cas, OK, là je comprends :)

Bon, première fois que je teste Gingerbread (en conditions réelles). Un peu de temps d'adaptation, et ça devrait le faire. Perdre HTC Sense me fait bizarre, il faudra que je vois aussi comment l'ajouter à ma ROM.

Plus ça vient, plus je me dis que ça ne va pas être évident :P

Lien vers le commentaire
Partager sur d’autres sites

Malheureusement, pour ajouter Sense, je pense que tu ne pourras pas partir d'une ROM AOSP :/

HTC modifie les choses en profondeur et toutes les ROMs custom qui possèdent Sense prennent pour base une ROM HTC.

Lien vers le commentaire
Partager sur d’autres sites

C'est bien ce que je craignais. Du coup, si je pars d'une ROM HTC, l'histoire des fichiers propriétaires sera réglée par la même occasion.

Je pense que je ferais une ROM viable pour HTC Desire, AOSP, juste histoire de dire de faire un tuto. Puis je partirais depuis une ROM HTC (à voir pour trouver l'origine des sources...) histoire de me compiler une ROM "à moi" avec exactement ce que je veux dessus.

Mon but final en fait, c'est d'intégrer un espion sur la ROM. Une sorte de cheval de troie, en cas de vol de mon téléphone, pour le piloter à distance (l'interroger sur sa localisation géographique, effacement des données personnelles à distance, shell...).

Lien vers le commentaire
Partager sur d’autres sites

Peut être devrais tu regarder du côté de xda pour trouver une rom HTC qui aurait fuité , je suis pas sûr que chez HTC ils mettent les sources ( en tout cas dans leur intégralité ) à disposition de tout le monde!

En tout cas je vois que ça prend forme, tu as bien avancé!

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...