Så du vill bygga en ROM men vet inte vart du ska börja?
Jag ämnar här att försöka klargöra lite saker om hur man kan bygga ROMs, ta bort lite av den mystik och det hemlighetsmakeri som vissa ROM byggare verkar vilja ha kvar bara för att verka speciella. Exempel på detta är folk som listade ut hur man t.ex. byggde om en boot.img till min telefon (Optimus 3D) som skiljer sig från de flesta (kommer ta upp hur man gör med deras med) och sedan vägrade dela med sig av denna kunskapen. Det stör mig och kunskapen är enbart att veta vilket program man skulle använda i stort sett, det är för övrigt ett standard program som finns med i Ubuntu program repos m.m.
Jag kommer använda mig av Ubuntu/Linux när jag gör detta men gissar att alla program finns som Windows versioner eller att de har motsvarande.
Nu kanske ni säger "Men hallå, jag kan inte koda, jag kan knappt trycka in pinkoden på min mobil!", Oroa dig inte, 95% av allt jag kommer ta upp här kommer vara helt kod-löst, det kommer mer vara copy/paste av kommandon m.m. för mycket av sakerna och det är mycket lättare än vad man tror, kommer nämna hur man sedan kan gå vidare med kodning men kommer inte gå in på det mer i detalj.
Så vad behöver du för att börja?
- En telefon underlättar, det funkar med emulatorn i Android SDK men då kan inte vara säker att det fungerar exakt likadant på mobilen
- En USB sladd till datorn (de borde de flesta fått med sin telefon)
- Telefonen måste vara rootad och ha ClockworkMod eller annan custom Recovery, för att lösa detta kolla på din telefons forum, lättaste för de flesta är att använda OnClickRoot programmet (sök på forumet) och sedan ROM manager (sök på forumet)
- Generellt sett är detta säkert, speciellt på nyare telefoner med chip recovery och iom att vi aldrig modifierar recovery så borde du alltid kunna boota in i den och återställa om något går fel men lite stålnerver skadar inte
Så vad är alla dessa ord nu kanske vissa undrar, vad menar han med recovery och chip recovery m.m. så innan vi börjar kör vi en kort liten ordbok, du kan skippa detta om du anser dig kunna och du kan alltid gå tillbaks till den om det behövs.
En Android telefon består av 5 delar vi bryr oss om när det kommer till att bygga ROMs
- Recovery
- Boot
- System
- Radio/BASEBAND
- Chip Recovery (nyare telefoner)
Extra ordlista:
Framework - en app/ett program som innehåller instruktioner för hur andra program ska tolkas eller hur något ska skötas
Recovery
Recovery är inget en ROM byggare i sig pillar med, men utan detta skulle man vara väldigt begränsad, custom Recovery så som ClockworkMod ger dig möjligheten att flasha in nya ROMs utan att ens ha telefonen kopplad till datorn men detta är inte det viktigaste, det viktigaste är att med en custom Recovery kan du själv återställa telefonen om något går galet och när man ger sig in och pillar i systemet eller Boot är detta en väldigt bekväm livlina att ha.
För att lägga in en custom Recovery hänvisar jag er åter igen till just din telefons forum och innan du börjar göra något se till att du har den installerad och att den fungerar som den ska så du minimerar riskerna med att bli sittande med en tegelsten du måste skicka in för att få fixad (Detta är även bra att ha även om man inte själv bygger ROM eller ens använder custom ROMs då du kan rädda telefonen från nästan alla mjukvarumässiga fel).
Boot
Boot eller boot.img som vi kommer ta upp här är start partitionen i telefonen när den inte startar in i Recovery läge utan ska starta som vanligt, här finns kerneln och annat som laddas in och fixas innan systemet startar, vi kommer gå in mer i detalj om detta senare. Boot är något som ROMs använder och som man bygger runt men det går att bara ta någon annans boot.img och bygga runt denna, detta är det man gör när man använder stock Kernel... Men vänta nu, vad är Kernel? Kernel är kärnan i ett operativsystem, det är hjärtat längst in som får systemet att gå runt och hjärnan som säger åt det hur det ska sköta sig och fungera, Android bygger på Linux kernel och har ett Java skal på det. Tänk dig att din telefon är som ett äpple , om vi bortser ett tag från hårdvaran dvs det du faktiskt kan ta på och kollar på mjukvaran så är det du ser bara skalet på äpplet, det är apps som körs i största del i Java, Java koden i sin tur körs på en virtuell Java Maskin som är byggd i C (Java och C är programspråk för dem som vill veta mer är det bara googla), den i sin tur pratar med Kerneln som tolkar kommandona, den tar emot och skickar ut allting som händer i telefonen och ser till att det fungerar, vill du veta mer så åter igen google.
Men som sagt tillbaks till boot.img, i den finns Kerneln och lite annat som telefonen använder först när den startar och sedan för att fungera men för många behöver man inte in och modifiera i detta om man inte vill.
System
System är själva systemet, det du ser, alla apps osv som uppgör själva ROMen och det finns inte så mycket mer att säga om det just nu men vi återkommer till det snart.
Radio/BASEBAND
Radio/BASEBAND är det som sköter all trådlös trafik, från 2G, 3G till WiFi och Bluetooth, du som ROM byggare kommer inte att påverka detta men måste vara medveten om det för att alla boot.imgs eller för att vara mer exakt alla kernels till din telefon kanske inte kan kommunicera med alla Radio/BASEBANDs vilket gör att om någon flashar in din ROM med fel BASEBAND installerat kommer den inte kunna använda telefonen till att ringa eller något sådant vilket motsäger lite iden med att ha en telefon ;P Det kan även vara att du sitter och försöker få din ROM att funka men sitter på fel BASEBAND och därmed inte kan lösa problemet. Radio/BASEBAND kan variera mellan EU, ASIEN, OCEANIEN eller AMERIKA, var noga att kolla på xda speciellt men även här på Swedroid så att du vet att du har rätt och om inte hur du gör för att ändra det.
Chip Recovery
Chip Recovery är något relativt nytt för Android men otroligt bra, nyare telefoner med nyare chip har en extra liten väg in att fixa telefonen om den t.ex. lyckas haverera både boot och recovery samtidigt, för egen del vet jag att LG O2X och LG O3D har detta, men utgår från att det gäller de flesta nyare (speciellt high-end) telefoner, principen är lätt, när du slår av telefonen och kopplar in USB kan du genom t.ex. en knapptryckning aktivera chipets egna recovery väg, detta är ingen direkt fix, men det ger en väg in i telefonen att flasha om allt i den, recovery, boot m.m. och pga att detta är insatt i hårdvaran kan du aldrig "bricka" den med mjukvara om du inte ger dig på att börja flasha om kretsar med specialverktyg ;P I vissa fall (O3D är även detta än så länge iaf enda sättet att flasha in en ny Radio/BASEBAND).
Då har vi gått igenom lite basics på vad saker är och är redo att börja, men vart ska vi börja, lättaste sättet är att ladda ner någon annans custom ROM till din telefon som du gillar men som du anser skulle kunna ändras lite till det bättre eller bara för att du vill.
För denna guide kommer jag använda min egen ROM, Rich Mahogany till O3D för att förklara saker och visa, det är lättast då jag har själv en O3D.
<iframe width="640" height="480" src="http://www.youtube.com/embed/q-SwB9kgZpk?rel=0&hd=1" frameborder="0" allowfullscreen></iframe>
Till att börja med när du laddar ner en ROM är det en signerad zip fil, vad betyder signerad? det är mer eller mindre bara en java check på att det inte är något fel på filen och att den följer vissa standards, här finns en guide på hur man signar, det är inte så svårt men lättare oftast bara att ta en zip som redan är signad och bara byta ut det man vill i den
Det är för apk men det är samma för zip, tror även de nämns i guiden
How to Sign Android APK or Zip Files | All About Web & Mobile Application Development
Så lättaste är att ta en signad zip (t.ex. min ROM zip) och bara byta ut allt i den, det spelar ingen roll att den var till en annan telefon, det gör inget men tar du från någon med exakt samma telefon som du får du fördelen av att du inte måste ändra något i installations filerna som finns i META-INF i zipen(går generellt sätt även att ta från andra telefoner men vill du vara 100% ta från samma), detta är en vanlig praxis hos ROM byggare för det är onödigt att uppfinna hjulet två ggr, även om de inte annonserar ut det så kan man ofta se små spår av det i vissa filer så skäms inte, good artists copy, great artists steal
Så nu har vi en installations zip fil, vad nu?
Först måste du bestämma vilken boot.img du ska använda, iom att den innehåller Kerneln speciellt så påverkar den mycket, vissa kanske vill ha en Kernel som är fixad för Over-Clocking (köra processorn snabbare) om det finns, andra kanske föredrar en batteri snål, du får själv kolla runt vad som finns för din mobil, en varning bara, ofta går det bara att byta ut boot.img utan större problem så länge du inte försöker ta system från stock och kernel/boot.img från CyanogenMod eller tvärtom, eller ta en Kernel/boot.img för t.ex. Android 4.0 och få den att funka med ett system från 2.3 eller tvärtom, det är för stora skillnader i grunden och ofta kommer detta leda till att det inte funkar, självklart är du fri att testa och leka med det men räkna med att de inte kommer funka Tänk även på att detta kan begränsa di, till O3D som jag har t.ex. kan man inte köra Cyanogen om man vill köra LGs 3D spel pga skillnaderna gör att du inte kan sätta på LGs Real3D framework och därmed funkar de inte.
Så vi kör på 2.3 nu då för det är den mest aktuella versionen (4.0 funkar felfritt inte än på någon mobil) se till att systemet du tar fungerar med din valda boot.img, men nu vad? vi har ju inte ändrat något alls bara kopierat?
Så vad är det vi kan modifiera?
Vi börjar med det lättaste, i zip-filen du nu har om du öppnar den finns det minst 3 saker
META-INF
SYSTEM
boot.img
<iframe width="640" height="480" src="http://www.youtube.com/embed/m9QcL8na-1o?rel=0&hd=1" frameborder="0" allowfullscreen></iframe>
(4 i min som du ser på filmen, återkommer till det senare)
META-INF och SYSTEM är mappar, i META-INF finns själva installationsfilerna den som gör det möjligt att flasha in detta i telefonen, det är egentligen bara en fil i den du behöver bry dig om
/META-INF/com/google/android/updater-script
resten är certifikat och annat som du bara kan låta vara kvar.
updater-script är filen som sköter själva installationen och skriver upp texten på skärmen, oftast det enda du kommer ändra är vad den skriver ut men det är bra att veta vart man eventuellt ändrar annat.
Vi börjar med att bryta ner min updater-script fil och se vad saker faktiskt gör
<iframe width="640" height="480" src="http://www.youtube.com/embed/8QTY-6bXA88?rel=0" frameborder="0" allowfullscreen></iframe>
; = avsluta kommando, är efter varje rad du skriver
Kod:
ui_print("[*] Setup...");
Detta är så simpelt att det är nästan löjligt, ui_print skriver ut den text du sätter inom (" ") på skärmen under installationen så denna skriver ut
[*] Setup...
Kod:
package_extract_file("boot.img", "/dev/block/mmcblk0p5");
Denna rad har alla, den packar upp din boot.img och lägger in den på telefonens boot partition som den läser när den startar.
Kod:
format("ext3", "EMMC", "/dev/block/mmcblk0p7");
Detta formaterar om systemet, i detta fall till etx3, alternativt kan vara till ext4 vilket är snabbare, kolla vilket din boot.img använder om du kan, kommer visa senare hur man kan ändra detta om man vill ha 4 istället för 3 eller så.
Kod:
show_progress(0.1, 10);
Detta fyller progress baren, första är 0.x, 1.0 är för verifieringsprocessen, du kan även bara fylla halva då resten av baren oxå är verifieringen, siffra två är tiden det tar att fylla, dvs hur snabbt den ska fyllas.
Kod:
mount("ext3", "EMMC", "/dev/block/mmcblk0p7", "/system");
package_extract_dir("system", "/system");
Här mountas systemet på rätt ställe och alla filer i din zip som ligger i SYSTEM mappen extraheras dit.
Kod:
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",....osv
Symlink är en symbolisk länk, när du moddar i ett system så kan det vara att du lägger något på ett annat ställe eller systemet är i fel mapp för att köra ett program, därav gör man som en länk till det man vill från det stället för säkerhetskull så systemet hittar det, ska du inte flytta runt saker kan du lämna detta "as is" annars får du efterforska mer noga.
Kod:
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm och set_perm_recursive ändrar tillstånd, tillstånd är hur systemet skyddar sig för att fel person / app inte ska kunna använda systemet på fel sätt, vet du inte vad du gör så undvik att pilla med detta för mycket då det kan ställa till problem men ska du djupdyka in i ROM bygge rekommenderar jag dig att läsa upp på det, googla t.ex. Android filsystem permissions och liknande för att lära dig mer.
Det finns fler saker i detta som går att lägga in, här är en mer uttömlig guide på just detta
update-script syntax - A guide for ROM devs, modders, and themers - xda-developers
Så då har vi fixat det första lilla på vår ROM, även om vi inte direkt ändrat något i själva ROMen
Nu vänder vi fokus istället mot SYSTEM mappen, här i finns alla apps m.m. som du har i systemet när du startar mobilen så vad kan man hitta på här?
Till att börja med kan man byta ut saker så som launcher eller vilket tangentbord man har från start, i min ROM t.ex. har jag tagit bort
LGHOME som är LGs launcher och lagt in ADW som är en custom launcher, att ändra launcher är lättaste sättet att ändra "looks and feeling" på en telefon, vissa launchers är oxå snabbare än andra men du får själv välja vilken du föredrar, samma gäller tangentbordet, jag tog bort LGs egna och ersatte det med Swype istället men som sagt det är helt upp till dig hur du vill klippa och klistra.
Du kan även ersätta andra saker hur du vill, sedan är det vissa saker som är lite kinkigare, vissa apks som tillhör systemet och teoretiskt sett går de att byta ut men finns inga bra alternativ ;P
<iframe width="640" height="480" src="http://www.youtube.com/embed/apVrL3wFFUo?rel=0" frameborder="0" allowfullscreen></iframe>
Saker som
Mms.apk (standard SMS/MMS appen men oxå SMS/MMS framework använt av ChompSMS, Handcent och andra)
Många apks med Provider i namnet betyder att de är just Frameworks och andra apps beror på dem
SystemUI.apk (Gingerbread och senare) är Framework för hur ikoner m.m. ser ut
Settings.apk m.m.
Ni får prova er fram av som går att ta bort eller kolla runt om någon annan gjort det
Vill ni lägga till en app är det bara hitta apkn till den och lägga i den mappen så kommer den ingå i systemet och ja du kan ha flera versioner av launchers eller tangentbord eller annat inlagt samtidigt utan problem
Så efter vi nu rivit ut och lagt in nya apks vad nu? detta är ju inte direkt så imponerande, vad är det bra för?
Ja först och främst får du ju bara de apps du vill och inte massa skräp som tar upp minne och slöar ner telefonen i onödan, det påverkar mycket av upplevelsen av telefonen och utseendet och för det andra är vi inte helt klara
Vissa av er kanske kollar i mappen /system/app och ser en massa dubbletter, vissa med .apk och andra med .odex, så vad är detta odex filerna för något? det är en liten optimering som gör att systemet snabbare och lättare kan hantera dem i minnet m.m. men de har en nackdel, de försvårar modifiering av systemet, du kan ha kvar dem om du vill men det går att ändra (och optimera på annat sätt) bara packa upp filerna ur zipen och att använda dessa perl script som illdroid på XDA gjort
[ deodex script] deodexerious: all your base are belong to us! - xda-developers - Länk till hans tråd på XDA med förklaring
Här är annars hur det går till, packa upp din system mapp ur din ROM zip, packa upp den i mappen rom (som fills efter att du packat upp scriptet ovan)
Dessa kommer även fixa odex filerna i mappen /system/framework vilket underlättar sedan när vi börjar ändra lite på ikoner m.m.
Lättaste nu är att öppna en terminal och köra igång scriptet
<iframe width="640" height="480" src="http://www.youtube.com/embed/p8Maxa0DFeo?rel=0" frameborder="0" allowfullscreen></iframe>
I filmen uppstod ett problem, en apk som inte ville bli deodexad så vad gör vi nu åt detta?
Först kollar vi vilken apk det var, i detta fallet var det bluetooth.apk som inte fungerade
så vi tittar i deodexrom.sh filen (öppna som en vanliga text fil), i Ubuntu dubbelklicka på den och välj display i menyn som kommer upp.
Hur man editerar denna; apk deodex misslyckas pga att antingen den är fel länkad till ett framework den inte behöver eller kan använda eller att den saknar ett framework ifrån de som deodexades först, detta kan vara lite trial and error baserat, ibland ger error meddelandet man får vid deodexing en liten hint men inte alltid så lätt att gissa, men det är bara testa sig fram och använda lite slutledningsförmåga. (9/10 frameworks som behövs finns i mappen frameworks, bara stött på en som jag inte lyckats deodexa men jag jobbar på att hitta lösningen )
btw om det är en app du inte ska ha med i din ROM så bara skit i den att göra om scriptet tar tid, fördelen är att du sedan har ett script som vet vad som hör till vad även i framtida ROMs du kanske gör till samma mobil (risken att de ändrar är ganska liten) så när ICS kommer till din mobil slipper du börja om
Här ser vi att det finns två bluetooth apks med lite andra namn (gissar de som Samsung använder) som är länkade till javax.obex.jar som du kan hitta om du kollar i framework mappen och mycket riktigt om jag fyller i
custom_bluetooth="-c :javax.obex.jar" (använd bara namnet på apkn och sätt custom_ framför)
efter dem så fungerar det nästa gång jag försöker deodexa bluetooth.apk
Men först ska vi optimera om våra apks, det gör vi med zipalign ett verktyg som finns i Android SDK, bara att ladda ner det så finns verktyget i mappen tools och här är hur du använder det
zipalign | Android Developers
Jag har gjort ett simpelt script som man lätt kan lägga tillsammans med de andra scripten för deodexing, bara kopiera det under och skapa en ny fil i Ubuntu, dör den till zipalign.sh i samma mapp, öppna och klistra in.
Kod:
#!/bin/bash
#
cd deodexed/framework
mkdir apk2
ls
for myfile in *.apk
do
if [ -d "$files" ]
then
echo "$myfile (dir)"
else
echo "$myfile"
saveTo=apk2/$myfile
zipalign -f 4 $myfile $saveTo
rm $myfile
echo "done."
fi
done
echo ""
echo "cleaning up.."
cd apk2
mv -f *.apk ../
cd ..
rmdir apk2
echo "done."
cd ../app
mkdir apk2
echo ""
ls
for myfile in *.apk
do
if [ -d "$files" ]
then
echo "$myfile (dir)"
else
echo "$myfile"
saveTo=apk2/$myfile
zipalign -f 4 $myfile $saveTo
rm $myfile
echo "done."
fi
done
echo "cleaning up.."
cd apk2
mv -f *.apk ../
cd ..
rmdir apk2
echo "done."
Är det så att det inte funkar som det ska, lägg till ett -v efter zipalign så det står
Kod:
zipalign -f -v 4 $myfile $saveTo
då borde du kunna se vad det är som går fel.
<iframe width="640" height="480" src="http://www.youtube.com/embed/a_wbPbadubI?rel=0" frameborder="0" allowfullscreen></iframe>
Detta ger en markant förbättring på prestandan, kolla på bilderna i min tråd för min ROM så ser ni skillnaden
https://swedroid.se/forum/58408-rom-rich-mahogany-2-3-5-gingerbread-lg-rc1-mix.html
Gör detta på alla apk filer, även de i framework mappen. (scriptet gör det automatiskt)
När man deodexat och zipalignat alla filer klart är det bara att lägga tbax dem in i ROM filen men nu tänkte jag ta upp detta med att lägga vissa apks i /data/app istället, anledningen till detta är att ge användaren mer kontroll. Ni kan se på filmen eller kolla min ROM för att se vilka permissions man måste sätta för att det ska fungera, alla apk gillar dock inte detta, t.ex. LG HOME deras Home Screen Launcher vägrar funka i denna mappen, men alla appar som finns på market funkar här (det är här de installeras från market) och gör då att användaren lätt kan avinstallera dem utan att hålla på med ROOT.
Så nu har vi ändrat en del, börjat optimera lite och börjat fixa lite med systemet, men många av er kanske även vill ändra ikoner m.m. så nu tar vi och kollar på det.
Ikoner i systemet finns på 2 ställen i 2.3 (1 innan), först i /system/framework/framework-res.apk och sedan i /system/app/SystemUI.apk (bara gingerbread och senare), men vänta nu ikonerna finns i apk filerna? är inte det krångligt att ändra på?
Njae faktiskt inte, om vi hade varit ute efter att ändra koden i dem så ja då hade de varit struligt men alla apks är faktiskt bara vanliga signerade zip filer och när man bygger ett program till Android sparas allt i den, koden byggs ihop och blir en binär fil men resurserna, i detta fallet bilder/ikoner ligger bara i en egen mapp inne i apk och är lätta att byta u, du kan byta ut ikoner och bilder på vilken apk du vill utan större problem, bara öppna upp en och titta.
Men en sak, det är ganska många bilder och blir det inte jätte jobbigt att byta alla? Mjo sant att gör man det för hand bara så kommer det vara jobbigt som tusan men det går och man har mer kontroll men det finns ett alternativ, ett så kallat online-kitchen som kan baka in ikoner i apkn så det blir lättare för dig
UOT Kitchen. Kitchen
De har inte alla men många alternativ och fungerar nästan felfritt
Så nu har vi även bytt ikonerna på detta stället vad mer kan vi göra? I'm on a roll!
Ja vi nu kan vi t.ex. byta ut boot animationen, den hittar du i
/system/media
Det är en vanlig zip fil med några saker i, det första är en vanlig txt fil som heter desc.txt och den styr hur animationen/animationerna går så vi bryter ner den lite snabbt
Kod:
480 800 15
p 1 0 part0
p 0 0 part1
480 800 är upplösningen på animationen/animationerna, i detta fall vanlig fullskärm för de flesta nya telefoner, 15 är antalet bilder per sekund den ska visa, så du kan speeda upp eller ner animationens hastighet.
p är bara en indikator för hur den ska tolka raden sedan är första siffran hur många ggr den animationen ska loopa, 0 = loopar om och om igen tills telefonen bootat, andra siffran är pause i sekunder som den ska göra på sista rutan i animationen så 10 där gör att animationen stannar 10sekunder på sista runtan innan den börjar om eller hoppar till nästa.
part0 och part1 är namn på mappar som innehåller bilderna som blir animationen, de kan vara vilka namn som helst, om den inte hittar mappen så går den bara vidare och när den kommer till slutet så börjar den om på första mappen.
Så vad är i mapparna?
png bilder, varje bild är en ruta och enda regeln är att de ordnas i nmamn ordning och sedan visar mobilen upp en efter en från första till sista, svårare än så är det inte, du kan ha 1 eller 10 mappar, spelar ingen roll men de flesta har 1 eller max 2 animationer ;P
När du ändrat är det bara att spara zip filen och lägga tbax den in i din ROM.
När vi ändå redan är och håller på i /system/media så här hittar du även alla ljud till mobilen i audio mappen, här kan du ta bort och lägga till notifikationsljud, ringsignaler m.m. Android kan hantera många format men smidigast är att ha dem i .mp3 eller .ogg filer så kan du vara 100% på att de funkar utan problem.
Vissa av er som jag kommer ha en fil som heter t.ex. PowerOn.raw, raw är en ren ljudström och i detta fallet t.ex. är det startljudet till min LG O3D, kanske ni har andra format m.m. lättaste sättet att ändra sådant är att googla och se hur ni fixar samma format för att byta ut sånt eller fråga på forum.
I mappen /system/fonts ligger alla fonts i systemet, det är standard ttf filer och vill du lägga in eller ta bort är det bara att göra det efter din egen smak, 99% av alla ttf fonts ska fungera utan minsta problem.
Så nu har vi gjort det mesta vi kan i /system utan att börja koda eller kompilera ihop egna saker så som en nyare version av busybox eller annat, men vill ni sätta er in i sånt så är det bara googla runt, ni vet ju redan hur ni tar er in och byter ut saker m.m.
Men än är vi inte helt klara, först vi ska ändra en sak till som är lite mer avancerad men ger ROMen lite mer känsla av att den är unik, fake it until you make it
Vi ska öppna upp och byta ut en splash screen i boot.img, det är även här man kan göra mycket tweaks m.m. men det kommer jag inte gå in på för det varierar mellan olika telefoner m.m. och kräver att man är lite mer insatt dock finns det mycket info om det xda och andra ställen bara man letar
Vi börjar med att öppna upp vår boot.img, för packar vi ur den ur ROM zipen sedan är det så lätt att det finns bra info och script
här
[HACK] compiled mkbootimg and unpack/repack linux scripts for boot.img - xda-developers
och här
HOWTO: Unpack, Edit, and Re-Pack Boot Images - Android Wiki
men det kluriga kan komma när man ska bygga ihop boot.img, för många kommer xda trådens packscripit funka men vissa nya som O3D (vet inte om någon annan kräver det men gissar de flesta dual-core) krävs det lite annat, det krävs istället för mkbootimg använda Uboot och deras program mkimage, kommer lägga in mer detaljer om detta senare annars får ni googla själva, för O3D är det iaf
mkimage -A ARM -T multi -n "My Boot.img" -C None -a 0x80008000 -e 0x80008000 -d kernel-file:RAM-file boot.img
Annars funkar det typ likadant som de andra och att packa upp boot.img för dem är samma utom att i scriptet måste ni ändra (med en vanlig text hanterare) 2048 till 76 om er boot.img använder Uboot.
När ni packat upp den går ni till mappen ni nu har som heter boot.img-ramdisk, i den finns mappen bootimages, där stöter ni på .rle filer, dessa är lite unika men inte omöjliga att ersätta, för att göra en egen .rle fil så anävnd Photoshop eller Gimp och gör en .png fil av den bilden ni vill ha, den ska helst vara 480x800 eller 320x480 och aldrig större än er skärmupplösning.
sedan behöver ni ImageMagick: Convert, Edit, Or Compose Bitmap Images som är gratis och använd deras converter
Kod:
convert -depth 8 -size 480x800 logo.png rgb:logo.raw
sedan behöver ni to565 för att göra .raw till .rle
[How To] Setup Static Bootlogo (Before Animated Boot Animation)
Detta är ren källkod om ni inte kan bygga den själva så är det bara googla efter en to565.exe så finns det att ladda ner och sitter ni på linux så borde det inte vara något problem att bygga den
Kod:
to565 -rle < logo.raw > logo.rle
Nu är det bara döpa om logo.rle till vad den heter, i mitt fall lg_logo.rle, lägg in den i mappen, följ guiden för att packa ihop igen, lägg in i er ROM fil och efter ni har Flashat så kommer det komma fram när ni bootar
I mappen ser ni även massa andra rle filer, de är alla system bilder, laddning när mobilen är av, något fel, inloggning/utloggnings animationer m.m. det är bara att byta ut, det är sedan även en massa config filer där, går inte in på det mer men vill man dyka djupare är det ett bra ställe att börja för att tweaka m.m.
Så där har vi iaf nog med info tror jag för att ni ska komma igång, har ni några mer tips så bara säga till
Tidigt utkast men borde hjälpa någon förbättrar den kanske senare om det är stort intresse.