2024. május 2., csütörtök

Gyorskeresés

Útvonal

Cikkek » Modding rovat

Saját Cyanogenmod ROM felépítése

Nem leszel modder attól, hogy ki tudod cserélni a kész romban a háttérképet, a forráskód a lényeg!

[ ÚJ TESZT ]

A rom forrásának letöltése, a build környezet

Nos. Most, hogy ide eljutottunk, már majdnem készen is vagyunk, csak éppen a kód kéne még, amivel dolgozni akarunk ugye. Miért a CM? Azért, mert van egy nagyon szépen dokumentált rendszere és nem utolsósorban, ha hivatalosan nem is, de modderektől igen széles körben elérhető források sokasága áll a kezdők szolgálatában:

Szóval: Terminál elő:

$ sudo apt-get install -y git curl

Ezek csak kisebb, de fontos csomagok. Ezek kezelik majd letöltéseket. A -y kapcsoló megkímél bennünket a kérdések sokaságától. Mindent magától csinál vele, mert mindenhol "igen" ("yes") választ ad.

$ mkdir ~/bin
$ mkdir ~/android

Két könyvtárra lesz szükségünk, mint látjuk. Az elsőben biztonságos helyen lesz a repo script. A másodikba kerül a forráskód.

$ echo "PATH=~/bin:$PATH" > ~/.bashrc
$ export PATH=~/bin:$PATH

Ez a környezeti váltózó hozzáadása. Itt figyeli a rendszer, hogy hol is vannak a futtatható fájlok. Ide kerül mindjárt a repo ugye. Most zárjuk be, majd nyissuk meg újra a Terminalt!

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

Semmi extra. Itt csak annyi történik, hogy a kis alkalmazásunk lehúzza nekünk a repo fájlt a megadott címről az előkészített könyvtárunkba. Ez így viszont nem jó, mert nem lesz jogunk futtatni.

Tehát adjunk jogokat is neki:

$ chmod a+x ~/bin/repo

Most pedig menjünk a célkönyvtárunkba végre, hogy le tudjuk tölteni a forrást.

$ cd ~/android

Állítsuk be a forrásunk letöltési tárolóját! Értelemszerűen olyat válasszunk, amit támogat a telefonunk, illetve valaki már esetleg írt rá dev.tree-t. Hogy mi is az, azzal később foglalkozunk.

CM7

$ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread

CM9

$ repo init -u repo init -u git://github.com/CyanogenMod/android.git -b ics

CM10

$ repo init -u git://github.com/CyanogenMod/android.git -b jellybean

CM10.1

$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1

Nem sokat fog tölteni, csak az indexfájlokat húzza le és megáll a szinkront várva. Közben kérheti az email címet és a nevet. Nem kell félni, semmire nem fogják használni, csak az egyedi azonosítónk épül fel belőle!

Nincs más hátra, mint a szinkron:

$ repo sync -jX

A "X" egy tetszőleges szám. Azt mutatja, hogy hány szálon fut a letöltés. Erősebb neteknél be lehet próbálkozni egy 16-os értékkel, amúgy 4 ajánlott.

Itt álljunk neki kajálni, illetve mehetünk kávézni, wc-re stb... Ugyanis most forrástól függően kb. 6-21 GB fog letöltődni. Beletelik némi időbe.

Néhány órával később....

Mikor végre lenn van az áhított forrás, akkor nincs más dolgunk, mint elindítani a fordítót és kimenni némi újabb hideg élelem után kutatva. Egy négy magos gépen kb. 40-50 perc a fordítási idő. Ha valakinek olyan kis Atom procis cucca van, mint nekem, annak 8-16 óra...

Szóval a fordító indítása:

$ . build/envsetup.sh

Fontos az elején a szóköz a pont után, ne hagyjátok le!

$ lunch

Itt megkapjuk a listát mire fordíthatunk, tehát mi van most előkészítve nekünk. 3 részből tevődik össze az eszközök neve. Például a ZTE Blade:

full_blade-eng

Az első standard érték, nem tudjuk állítgatni. A build környezetnek kell. A második az adott eszköz kódneve, előtte a kötelező "_" szintén a fordítónak kell. Az utolsó egy kulcs, ami a következő lehet:

-user: ez lenne az alap. Limitált hozzáférés, semmi root és egyéb dolog.
-userdebug: ezt szoktuk használni, mert ez root jogokat is ad az alaphoz
-eng: ha ezt választjuk, akkor az összes debug tool is lefordul a forrással, tehát minden tesztet elérünk és később azokkal is tudunk dolgozni. Viszont ez tart a legtovább.

Ám a CM romok alatt mostanra egyetlen dev.tree sincs előre letöltve. Sem a hozzájuk tartozó kernel. Mit is tehetünk?

Mintha mi sem történt volna, futtassuk csak a parancsot! Ki fogja írni, hogy nem találja ezt az eszközt még, de megkeresi. Ha minden jól ment és az eszközünk tényleg támogatott, akkor most a fordító letölti a megfelelő dev.tree-t. Ellenkező esetben kissé ráfaragtunk, ugyanis írhatunk egy sajátot, aminek a kitárgyalása kimerítené a következő 30 oldalt is a cikkben...

Most menjünk a dev.tree alá és csatlakoztassuk a készülékünk az USB hibakeresést engedélyezve:

cd device/gyarto/eszkoz
./extract-files.sh

Ezzel lemásoljuk az eszközünkbe telepített nem nyílt forrású részeket, amiket használni szeretnénk a romban továbbra is. Vigyázzunk, hogy ha pl. CM7-es romot akarunk, akkor ne CM9-es fájlokat másoljunk bele, mert nem szereti.

Ezzel előállítottuk az eszköz vendor mappáját, visszamehetünk a főkönyvtárba:

cd ../../..

Aztán megpróbálhatunk építkezni:

$ make -jX

Itt is, mint a letöltésnél, azt jelzi az X, hogy a fordításra hány folyamatszálat adunk. Melegen ajánlom, hogy senki se próbálkozzon 4 feletti számmal, ha még valamit akar is csinálni a gépén...

Ha minden jól ment és nem hibával állt meg a fordítónk, akkor most a könyvtárunkban ott figyel az out/target/product/ezközünkneve mappa alatt a system.img fájlunk. Ha nem találja az eszközünk a fordító, akkor próbáljuk ki a

$ brunch blade

...vagyis a brunch parancs után simán az eszköz nevét megadni. A CM7-es verziók gyakran csak így fordultak le.

Ha a make parancs sikeres volt és megvan a system.img, akkor:

Adjuk ki még a:

$ make otapackage -jX

...parancsot és várjuk meg hogy létrehozza a zip fájunk, amivel a recovery alól máris tehetjük fel a forrásunk végeredményét... Természetesen itt is dolgozhatunk több szálon!

Ha a brunch parancsot használtuk, akkor egyből a kész zipet kapjuk meg.


A fordító megkezdte a munkát, készül a friss CM7!

A végleges romunk mellé telepíthetünk még némi optimalizálást szolgáló kiegészítőt is:

sudo apt-get install pngcrush

Ám mire megyünk mindezzel, ha lényegében most egy olyan kész romunk van, amit amúgy is letölthetünk? Na ugye, hogy semmire!

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.