Guide: Bygg din egen ROM

Diskussion i 'Frågor, support och diskussion' startad av echt, 20 nov 2011.

  1. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    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?
    1. 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
    2. En USB sladd till datorn (de borde de flesta fått med sin telefon)
    3. 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)
    4. 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
    1. Recovery
    2. Boot
    3. System
    4. Radio/BASEBAND
    5. 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 :P, 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&amp;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&amp;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 :P

    [​IMG]

    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)
    [​IMG]

    [​IMG]

    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

    [​IMG]

    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 :P)

    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 ;)

    [​IMG]

    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.
     
    Last edited: 26 nov 2011
    have.heart, hackeron, Galax och 22 andra gillar detta.
  2. w4kk0

    w4kk0 Youth Droid Medlem

    Blev medlem:
    21 apr 2010
    Inlägg:
    243
    Mottagna gillanden:
    18
    Operatör:
    Tre

    MINA ENHETER

    Operatör:
    Tre
    Hade jag kunnat tacka fler gånger hade jag gjort det!! :D

    Lite småstavfel och glömt ordet "att" på några ställen, men innehållet gjorde att man förstår ROM-kokandet mycket väl!!

    10/10 poäng :D
     
  3. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    Mjo säkert massa små fel, slängde ihop det igår i notepad och bara copy pastade här men bra att den upp skattas iaf :) får fixa till felen under dagen om jag hinner :)
     
    redstripe gillar detta.
  4. Poptot

    Poptot Senior Droid Medlem

    Blev medlem:
    10 aug 2010
    Inlägg:
    1 316
    Mottagna gillanden:
    74

    MINA ENHETER

    Är detta en universal guide som fungerar till alla telefoner? Jag har en HTC Sensation och det hade varit najs att göra en egen rom.
     
  5. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    Ja den är mer eller mindre Universal, vissa saker skiljer sig ju mellan olika modeller så som hur man bygger boot.img finns två olika sätt osv men i det stora hela är de exakt samma för alla android mobiler :)
     
  6. Larss00n80

    Larss00n80 Bannlyst Bannlyst

    Blev medlem:
    26 jan 2011
    Inlägg:
    1 624
    Mottagna gillanden:
    186

    MINA ENHETER

    Nu har jag något att göra i helgen! :D
     
  7. Poptot

    Poptot Senior Droid Medlem

    Blev medlem:
    10 aug 2010
    Inlägg:
    1 316
    Mottagna gillanden:
    74

    MINA ENHETER

    Hur öppnar man boot.img? Har den något att göra med bootanimationen?

    Jag har nu jobbat med den romen som jag kör med på min telefon och har gjort lite grann. Vart ändrar man där det står på Om telefon?
     
  8. redstripe

    redstripe Kid Droid Medlem

    Blev medlem:
    21 sept 2011
    Inlägg:
    43
    Mottagna gillanden:
    1

    MINA ENHETER

    Ska lätt testas! :)
     
  9. Droidoptimus

    Droidoptimus Youth Droid Medlem

    Blev medlem:
    23 jun 2011
    Inlägg:
    240
    Mottagna gillanden:
    31
    Operatör:
    Hi3G
    Telefon:
    Motorola Moto X 2014

    MINA ENHETER

    Operatör:
    Hi3G
    Telefon:
    Motorola Moto X 2014
    Info:
    Nova Prime
    Telefon 2:
    Sony Xperia Z3 Black
    Info:
    Nova Prime
    Telefon 3:
    Htc One X
    ROM:
    Cyanogenmod 11
    Info:
    Nova Prime
    Bästa guiden och på svenska :) !! Mycket tydlig och bra beskriven :)
    Tack!
     
  10. Poptot

    Poptot Senior Droid Medlem

    Blev medlem:
    10 aug 2010
    Inlägg:
    1 316
    Mottagna gillanden:
    74

    MINA ENHETER

    Då har jag en rom som jag har fixat med i ca. 3 timmar, men jag törs inte flasha in den på min Sensation...
     
  11. Poptot

    Poptot Senior Droid Medlem

    Blev medlem:
    10 aug 2010
    Inlägg:
    1 316
    Mottagna gillanden:
    74

    MINA ENHETER

    Nu har jag flashat in romen, och inget är ändrat. Bootanimationen funkade inte, det stod inte på Om telefon det som jag hade skrivit, det enda som fanns som jag hade lagt till var två appar. Är det dubeltter av alla .xml filer så att man måste ändra det på flera ställen eller?
     
  12. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    bootanimationen ligger i vanliga ROM filerna, oftast i
    Kod:
    /system/media
    mappen och heter bootanimation.zip, i boot.img finns boot flash bilden sparad som rle, oftast finns det en logo i mobilen som kommer upp när boot.img läses in (ofta företagets logo eller namn) sedan läser den boot.img rle splash filen och den är ofta samma, sedan när boot.img laddat klart då visar den bootanimation.zip som är animerad tills det att systemet startar.

    Har du ClockworkMod custom recovery är risken med att köra in en ny ROM nästan noll, gör bara en backup på din tidigare så kan du lätt återställa ROMen.

    Vad exakt har du ändrat som inte dök upp?
    Är det i /system/build.prop du ändrade? ibland kan det finnas dubbletter av saker som t.ex.
    ro.build.version.release
    och då är det bara första som räknas, de andra kan du ta bort.
     
    Poptot gillar detta.
  13. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    Glad att ni gillar den, är det något som är oklart eller något som skiljer sig för era telefoner så får ni gärna säga till så lägger jag in det, t.ex. tänkte jag en lista på exakt vilket kommando som används för att bygga ihop boot.img för varje telefon osv :)
     
  14. Poptot

    Poptot Senior Droid Medlem

    Blev medlem:
    10 aug 2010
    Inlägg:
    1 316
    Mottagna gillanden:
    74

    MINA ENHETER

    Jag ändrade innehållet i bootanimation.zip, men det funkade inte. Jag tror att jag hade med en bild mindre än original. Kan det ha något att säga? Det med build.prop, det var i den jag ändrade, ja.
     
  15. Larss00n80

    Larss00n80 Bannlyst Bannlyst

    Blev medlem:
    26 jan 2011
    Inlägg:
    1 624
    Mottagna gillanden:
    186

    MINA ENHETER

    Har nu suttit och försökt få in Ubuntu på min Win7 dator utan att lyckas... Har testat Wuib och boot från USB, några tips?
     
  16. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    Boot från USB borde funka men annars testa köra en virtual machine med Ubuntu på?

    Sent from my LG-P920 using Tapatalk
     
  17. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    Antalet bilder ska inte spela någon roll så, dubbel kolla din zip att allt sparades som det skulle ibland blir det sådana fel för mig eller att man flashar in fel zip ;D
     
  18. Larss00n80

    Larss00n80 Bannlyst Bannlyst

    Blev medlem:
    26 jan 2011
    Inlägg:
    1 624
    Mottagna gillanden:
    186

    MINA ENHETER


    Ska testa att dra ner på en cd skiva nu så får vi se!
     
  19. Larss00n80

    Larss00n80 Bannlyst Bannlyst

    Blev medlem:
    26 jan 2011
    Inlägg:
    1 624
    Mottagna gillanden:
    186

    MINA ENHETER


    CD skiva fungerade inte heller... Har du något tips på en bra virtual machine?
     
  20. echt

    echt Adult Droid Medlem

    Blev medlem:
    11 aug 2009
    Inlägg:
    811
    Mottagna gillanden:
    111
    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Xperia Z5 Compact
    Har du valt USB som första boot när du försökt? F5 tror jag det är för att manuellt välja vid boot.

    Annars Oracle VM funkar bra för mig :)