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!