Skocz do zawartości
Zodex

Jak zbudować rom?

    Rekomendowane odpowiedzi

    Zodex

    Cześć!
    Dziś postanowiłem podzielić się z wami wiedzą nabytą do tej pory o kompilowaniu android'a. Zaczynajmy!
    Więc co otrzymamy?
    Paczkę .ZIP z naszym romem.
    Będę tutaj pisał ogólnie, tzn. najpierw napisze co i jak a potem dostosuję komendę do źródeł :)

    Wymagania:
    *Min.
    - 2x procesor
    - 4GB Ram - Trzeba zrobić SWAP
    - 100GB wolnego miejsca
    - 4MB Internetu - Będzie długo trwać
    - Linux x64 (Dowolna dystrybucja)
    *Zalecane
    - 4x+ procesor
    - 8GB Ram
    - 160GB wolnego miejsca
    - 8MB internetu
    - Linux x64 (Dowolna dystrybucja)

    Co do dystrybucji - na początek zalecam jakiegoś Ubuntu (oczywiście x64!).

    1. Pobieranie wymaganych pakietów:

    sudo apt-get install bison build-essential curl flex g++-multilib gcc-multilib git-core gnupg gperf lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev

    Przy niektórych dystrybucjach mogą nie być potrzebne niektóre pakiety.

    2. Przygotowanie folderów:

    mkdir ~/binPATH=~/bin:$PATH
    curl http://commondatastorage.googleapis.com/git-repo-downloads/repo>~/bin/repochmod a+x ~/bin/repomkdir ~/androidcd ~/android 

    3. Pobieramy źródła:

    *Najpierw tworzymy folder do którego zamierzamy pobrać źródła i wchodzimy do niego :)*
    Zaczynam o komendy która jest bardzo ważna czyli:

    repo init -u [Link do git'a] -b [branch który chcemy pobrać]

    Komenda ta ustala co ma być pobrane
    Po złożeniu nasza komenda wygląda tak:

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

    Komenda ta ustali że pobieramy repo z github'a CyanogenMod'a.
    Teraz musimy włączyć pobieranie, służy do tego komenda:

    repo sync -j*

    -j* - Zamiast gwiazdki wstawiamy liczbę jobów - ładnie opisał to kolega JustArchi (Thanks!)

    Liczbę jobów zawsze ustawia się na liczbę threadów, a jak ktoś działa na vboxie to musi pierw tą liczbę threadów zwiększyć bo standardowo ma 1. Liczbę threadów z kolei powie nam cat /proc/cpuinfo jako ostatni numer "proccessor", liczony od 0 (czyli trzeba zwiększyć liczbę o +1).

    Teraz wytrwale czekamy na koniec - możemy wyjść z domu z kolegami ;)

    5. Aktualizujemy Terminal i Rom Manager:
    UWAGA! Krok ten jest tylko dla Cyanogenmod.
     

    cd ~/vendor/cm

    Jeżeli już jesteś w folderze :

    ./get-prebuilts

    6. Pobieramy device tree:
    Tylko dla tych urządzeń które są wspierane przez CM
    Wklepujesz po prostu

    . build/envsetup.shbreakfast cm_<device>-eng

    Tam gdzie device wpisujesz swoje urządzenie
    I już :)

    7. Modyfikujemy davice tree:
    Pkt. ten jest raczej dla tych developerów którzy wierzą w tweaki.
    Jeżeli robisz rom pierwszy raz to nie zalecam tu majsterkować...

    Pierwsze pytanie to: Czy chcesz mieć w romie odex?
    Otwiersz Boardconfig.mk
    Szukasz linijki :

    WITH_DEXPREOPT :=

    Jeżeli nie ma takiej linijki dodaj ją.
    Jeżeli chcesz odex true, nie chcesz false, Proste nie?
    Od razu mówię że odexują się tylko aplikacje za źródeł ;)

    Druga rzecz to device_xxxxxx.mk
    Gdzie xxxxxx jest nazwa twojego urządzenia.
    Może się nazywać inaczej, np. p700.mk.
    Tam znajduje się dużo ważnych rzeczy.
    Wejdź do tego pliku.
    Najlepiej przeczytaj go, spróbuj zrozumieć :)
    Jeżeli go mniej więcej rozumiesz to możesz spróbować go zmodyfikować...

    Teraz zajmiemy się automatycznym kopiowaniem tego co chcemy mieć w /system.
    Wszystko pokazuje na przykładzie folderu "system".
    - W prebuilt dodaj folder "system".
    - Do tego folderu dodaj co chcesz aby bezpośrednio dodało się do /system w telefonie.
    - Potem wejdź znowu do pliku device_xxxxxx.mk lub xxxxxx.mk (tak jak pisałem wyżej, w zależności od urządzenia).
    - I na koniec pliku dodaj

    PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,device/xxxx/xxxxxx/prebuilt/system,system)

    W miejsce "iksów" dodaj ścierzkę do swojego prebuilt :).
    Jeżeli chcesz dodac apke zrób w naszym folderze "system" po prostu folder app i tak ze wszystkim.

    Jeżeli nie chcesz jakiejś apki która kompiluje się z romem, wejdź w /packages/ i usuwaj apki z tych folderów które tam są - WAŻNE jest aby wiedzieć do czego służy dana aplikacja.
    Pamiętajcie że zrobienie po prostu czynności z tego pkt. NIE czyni was developerem, developerem może nazywać się ktoś kto pisze nowe funkcje, naprawia błędy itd.

    8. BUDUJEMY!
    Wklep :

    cd android. build/envsetup.shbreakfast URZĄDZENIEbrunch URZĄDZENIE

    Podziękowania dla:
    - eagleeyetom
    - CyanogenMod
    - cr3pt
    - Wszystkim użytkownikom forum!

    Edytowane przez Zodex

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    maxprzemo

    @mimirower45

    Bardzo fajny Tutorial ale mam parę pytań .

    Jak zrobić rom na telefon który jest nie wspierany oficjalnie ?

    Np. chcę zrobić https://github.com/ReVolt-ROM który nie wspiera mojego modelu . W tym wypadku nie ma źródeł device dla mojego telefonu .

    Ale są źródła w innych repozytoriach github , więc czy można mieszać takie źródła żeby uzyskać działający rom . Jeśli tak to jak ?

    Czy w tym sposobie który opisałeś Kernel też się od razu kompiluje czy trzeba go dodatkowo kompilować ?

    I ostatnie pytanie czy jest możliwość kompilowania pojedynczej aplikacji ze źródeł ?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Zodex

    Podaj link do git'a z device tree twojego fona :)

    Myślę że to mogło by zadziałać jeżeli byś się postarał :)

    Co do kernela to zależy od telefonu, myślę że na ace 2 kernel kompiluje się z romem :)

    Jeżeli będzie ci potrzebna pomoc z portowaniem, napisz na gg 33135009 to ci pomogę :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    A po zbudowaniu czystego CM'a ?

    Po prostu dodajemy apki itp ?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    WKD622

    @up

    Chyba tak xD.

    Mogę się mylić ale ale od tego jest android Kitchen.

    Polecam tutorial na xda - [GUIDE] [how to] CREATE OWN ROM [FOR ANY ANDROID DEVICE] [FOR N00B] [EASIEST METHODS] - xda-developers

    Dopiero raczkuję w temacie, ale od kilku dni próbuję coś ogarnąć. :P

    Edytowane przez WKD622

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    wdarku

    Pomiędzy tutkiem autora tego postu a twoim jest zasadnicza różnica twój jest na Windowsa a kolegi na Linuksa a jak wiemy Android został stworzony na Linuksie

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Zodex

    Nie, budowanie androida nie polega na dodawaniu apek i tweaków, ja napisałem tylko jak modyfikować device tree :)

    Jest pod koniec turtoriala nawet notka na ten temat :)

    PS Najpierw się modyfikuje device tree potem buduje CM'a :D

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @up

    A jak ten Device Tree zmodyfikować?

    Bo ja z tydzień temu zbudowałem ze źródeł, ale z device free nic nie robiłem xD

    Wysłane z mojego C5303 przy użyciu Tapatalka

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Zodex

    A przeczytałeś poradnik do końca ? :D

    Pkt.7 :)

    A jak chcesz się bardziej pobawić to na xda jest masa patchów które dodają fajne funkcje :) A na github.com znajdziesz mase commitów które mogą ci się spodobać :D

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    WKD622

    Moglibyście zrobić taki słowniczek podstawowych pojęć. Łatwiej by było to ogarnąć, w formie tabelki. ;)

    Coś w tym stylu - http://forum.android.com.pl/f842/sa-owniczek-pojae-ae-dla-poczae-tkujae-cych-334423/

    tylko oczywiście z pojęciami dotyczącymi "developerów" ;).

    Niektórym się to wydaje oczywiste ale jak ktoś zaczyna to ma problem ;).

    Pierwszy bym postawił piwo :D.

    Edytowane przez WKD622

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.