18 stycznia, 2022

DIY: Skompiluj Android ROM z kodu źródłowego

Android jest najczęściej używanym mobilnym systemem operacyjnym na świecie • A najlepsze jest to, że jest to całkowicie open-source, co w kategoriach laików oznacza, że kod źródłowy, rzeczywisty program jest dostępny otwarcie dla każdego, aby pobrać, dostosować i zbudować własny ROM.

istnieje wiele niestandardowych dystrybucji Androida dostępnych tam, a popularne to CyanogenMod, SlimROM, Paranoid Android, AOKP, Liquid Smooth, MIUI, Xylon, Ice Cold Jelly itp.

w dzisiejszym przewodniku skompilujemy CyanogenMod 10.2, najpopularniejszy ROM na rynku wtórnym Androida. Procedura jest w 99% taka sama dla wszystkich niestandardowych ROM-ów, więc ten przewodnik może być użyty jako odniesienie do kompilacji innych ROM-ów.

wymagania wstępne

  1. telefon z Androidem z łatwo dostępnym jądrem i źródłem urządzenia, już zrootowanym i z zainstalowanym niestandardowym odzyskiwaniem.
  2. 64-bitowa dystrybucja Linuksa (preferujemy Ubuntu).
  3. co najmniej 100 GB wolnego na dysku twardym.
  4. Praktyczna znajomość poleceń terminala Linux.
  5. dość szybkie połączenie z Internetem.

zwróć uwagę: 64-bitowy System Operacyjny Linux jest koniecznością i musi być instalacją natywną, a nie maszyną wirtualną.

Skonfiguruj Swoją Maszynę Do Budowania

1. Zainstaluj wybrany System Operacyjny Linux: Wersja 64-bitowa, zgodnie z oficjalnymi instrukcjami. (Przewodnik zakłada, że korzystamy z Ubuntu 13.04). Zachowaj partycję o pojemności co najmniej 100 GB z partycją wymiany 16 GB.

2. Zainstaluj następującą listę pakietów: Otwórz aplikację Terminal i wpisz

sudo apt-get install<Nazwa pakietu >

naciśnij enter, a pojawi się monit o podanie hasła.

Lista pakietów

git-core
gnupg
flex
bison
python
rar
original-awk
gawk
p7zip-full
gperf
libsdl1.2-dev
libesd0-dev
libwxgtk2.6-dev
squashfs-tools
build-essential
zip
curl
libncurses5-dev
zlib1g-dev
pngcrush
schedtool
libc6-dev
x11proto-core-dev
libx11-dev
libg11-mesa-dev
mingw32
tofrodos
python-markdown
libxml2-utils
g++-multilib
lib32z1-dev
ia32-libs
lib32ncurses5-dev
lib32readline-gplv2-dev
gcc-multilib
g++-multilib
xsltproc

3. Install Java JDK 1.6 for Linux 64-bit: File name should be jdk-6u##-linux-x64.bin, ## are version numbers. Move the downloaded package to your home directory. Otwórz aplikację Terminal i uruchom następujący zestaw poleceń:

sudo apt-get purge openjdk-\* icedtea-\*icedtea6 – \ *
sudo mkdir-p /opt/java/64/
sudo cp jdk-6U##-linux-x64.bin / opt/java / 64
sudo su –
cd /opt / java / 64
chmod a+x jdk-6U##-linux-x64.bin
./ jdk-6u##-linux-x64.bin
exit

teraz musimy dodać ścieżkę JDK do .bashrc

sudo gedit ~/.bashrc

dodaj te linie na końcu pliku tekstowego

# Java Path
export JAVA_HOME=/opt/java / 64 / jdk1.6.0_# #
export PATH = $PATH:$JAVA_HOME / bin

4. Zainstaluj Android SDK: Otwórz aplikację Terminal

cd ~
mkdir android &&cd android
mkdir sdk

Pobierz Android SDK z http://developer.android.com/sdk/index.html. Rozpakuj zawartość pakietu do ~ / android / sdk musimy dodać ścieżkę Android SDK do .bashrc

sudo gedit ~/.bashrc

dodaj te linie do końca pliku tekstowego:

# Android SDK Path
export PATH=$PATH:~/android/sdk
export PATH=$PATH:~/android/sdk/platform-tools
export PATH = $PATH:~ /android/sdk / tools

teraz zainstaluj Narzędzia Android SDK, wpisując

android

5. Skonfiguruj swoje konto github i zdalne repo: możesz pominąć ten krok, jeśli CyanogenMod oficjalnie obsługuje twój telefon. Przejdź do github.com i załóż konto dla siebie. W tym przewodniku rozważam Twoją nazwę użytkownika jako „użytkownik”.

odwiedź „github.com/CyanogenMod/android’, naciśnij widelec. Zdalny manifest zostanie rozwidlony i dostępny w Twoim osobistym repozytorium.

teraz przejdź do „github.com/user/android’. Otwórz plik domyślny.xml, naciśnij Edytuj. Znajdź tę linię:

<project path= „android” name = „CyanogenMod / android” />

i zastąp to

<project path= „android” name= „user / android” />

rozważam źródło jądra Twojego urządzenia, źródło urządzenia i libs dostawcy dla Androida 4.3 na

github.com/user2/kernel_source
github.com/user2/device_source
github.com/user2/device-common_source
github.com/user2/vendor

zakładam, że branch ma nazwę 'jb4. 3′. Możesz znaleźć dokładną nazwę w rzeczywistym repo. Następnie na końcu pliku dodaj te linie, modyfikując je zgodnie z kodem źródłowym urządzenia.

<project path= „kernel / your_company / your_device” name = „user2 / kernel_source” remote = „github” revision= „jb4.3” />
<project path= „device/your_company / your_device” name = „user2 / device_source” remote = „github” revision= „jb4.3” />
<project path= „device / your_company / your_device-common” name=” user2/device-common_source”remote=” github”revision =” jb4.3″ />
<project path= „vendor / your_company” name= „user2 / vendor” remote = „github” revision= „jb4.3” />

zatwierdź swoje zmiany. Twój zdalny manifest jest gotowy do wdrożenia.

6. Zainstaluj polecenie Repo: Otwórz Terminal i wpisz

cd ~
mkdir ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo

musimy dodać ścieżkę Repo do .bashrc

sudo gedit ~/.bashrc

Dodaj tę linię na końcu pliku tekstowego

export PATH=$PATH:~ / bin

7. Pobierz kod źródłowy ROM: Otwórz Terminal i wpisz

mkdir ~/android/cm
cd ~ / android / cm

jeśli potrzebujesz kroku 5, wpisz

repo INIT –u git://github.com/user/android.Git –B cm-10.2

jeśli Twoje urządzenie obsługuje CyanogenMod 10.2 oficjalnie, wpisz

repo INIT –u git://github.com/CyanogenMod/android.Git –B cm-10.2

Teraz uruchom

repo sync-j16

idź na kawę lub posiłek, to zajmie dużo czasu. Kod źródłowy ma znacznie ponad 10 GB, więc zajmie to trochę czasu.

Pobieranie Źródła

8. Skonfiguruj rzeczy specyficzne dla urządzenia: jeśli Twoje urządzenie obsługuje CyanogenMod 10.2 oficjalnie, otwórz Terminal i wpisz

cd ~/android/cm
. build/envsetup.sh && śniadanie <device_codename>

zajmie to trochę czasu, źródło urządzenia ma rozmiar około 3 GB. Następnie musisz mieć oficjalny CM10.2 zainstalowany w telefonie, podłączyć go do komputera w trybie debugowania USB i uruchomić następujące polecenia:

ADB root
cd ~/android/cm/device/<your_company>/<your_device>/
./extract-files.sh

jeśli Twoje urządzenie oficjalnie nie obsługuje CyanogenMod 10.2, to nie masz nic do roboty w tym kroku, źródła już na Ciebie czekają.

9. Pobierz Prebuilt Stuff i skonfiguruj Toolchain: Otwórz Terminal i wpisz

cd ~/android/cm/vendor/cm
sh ./ get-prebuilts

teraz musimy dodać ścieżkę Toolchaina do ./ bashrc

cd ~ / android / cm
sudo gedit~/.bashrc

dodaj te linie do końca pliku tekstowego

# Android Toolchain
export ARCH = arm
export CCOMPILE=$CROSS_COMPILE
export CROSS_COMPILE=arm-eabi –
export PATH=$PATH:~ / android / cm / prebuilt / linux-x86 / toolchain/arm-eabi-4.4.3 / bin

10. Zbuduj swój ROM: więc wszystko jest w porządku i gotowe. Czas zbudować ROM. Otwórz Terminal i wpisz

cd ~/android/cm
. build/envsetup.sh
brunch <device_codename>

czas się zdrzemnąć. Zbudowanie ROM na przeciętnym komputerze zajmie miliardy lat. Cóż, to była przesada, ale na moim domowym komputerze (Core i5 2nd gen Z 8GB RAM), trwa ponad 3 godziny, aby zbudować od podstaw. Mam nadzieję, że nie będzie żadnych błędów, a budowa zakończy się dobrze. Otrzymasz pakiet wyjściowy w

~/android/cm/out/target/product/<your_device>/cm-10.2-something-UNOFFICIAL-<your_device>.zip

nadszedł czas, aby zainstalować nowo skompilowany ROM w telefonie. Pobierz pakiet Google Apps z ” www.goo.im / gapps ” dla odpowiedniej wersji Androida. Umieść oba te pakiety w telefonie i flashuj je w trybie odzyskiwania. Voila, twój własny skompilowany ROM działa teraz na Twoim urządzeniu.

Cóż, więc nauczyłeś się kompilować ROM. I co teraz?

zaktualizuj ROM źródłowy

aby pobrać nowe aktualizacje kodu źródłowego do pobranego lokalnie kodu źródłowego, otwórz Terminal i wpisz

cd ~/android/cm
repo sync –j16

aby zbudować ROM, po zaktualizowaniu kodu źródłowego otwórz terminal i wpisz

CD ~/Android/cm
make installclean
find ./ out / – name ’ build.prop ’ / xargs RM
find ./ out / – name 'cm_<your_device>-target_files-eng.*.zip ’ / xargs RM
. build/envsetup.sh
brunch < your_device>

ponieważ nie odbudowujesz od zera, ale odbudowujesz tak, jak jest, zajmie to znacznie mniej czasu, w większości przypadków tylko około 15-30 minut. Powinieneś synchronizować swoje lokalne źródło co tydzień, aby zachować świeżość lokalnego źródła.

Wyczyść katalog roboczy

aby całkowicie wyczyścić katalog roboczy (Czytaj: Przywróć folder źródłowy do stanu magazynowego), otwórz Terminal i wpisz następujące polecenia.

cd ~/android/cm
make installclean
make clobber

pamiętaj, że po uruchomieniu tych poleceń wszystkie Twoje dane wyjściowe zostaną usunięte, więc następna kompilacja zajmie 3-4 godziny ponownie, ponieważ wszystko jest ponownie zbudowane od podstaw. Jeśli partycja dysku twardego jest mała, powiedzmy około 100 GB, należy wyczyścić katalog roboczy mniej więcej raz na 4 Kompilacje, w przeciwnym razie zabraknie miejsca na dysku twardym.

Przyspiesz budowanie przez CCACHE

Budowa ROM-u zajmuje dużo czasu. Ale czas można skrócić o około 30-45% za pomocą CCACHE. CCACHE oznacza Cache kompilatora, buforuje wyjście kompilacji z wcześniejszych kompilacji, dzięki czemu może być ponownie użyte w późniejszych kompilacjach.

zauważ, że CCACHE potrzebuje dużo miejsca na dysku twardym do buforowania zawartości, więc jest zalecany wtedy i tylko wtedy, gdy partycja dysku twardego znajduje się gdzieś w pobliżu 200GB lub wyższej. Aby skonfigurować CCACHE, otwórz Terminal i wpisz:

cd ~/android/cm
Eksportuj USE_CCACHE=1
Eksportuj CACHE_DIR=~/.ccache
prebuilts / misc/linux-x86/ccache / ccache –M 50g

możesz zmienić maksymalny przydział rozmiaru na CCACHE z 50GB na cokolwiek chcesz, ale minimum około 30GB powinno być używane dla dobrych wyników.

Pobierz commity z innych ROM-ów

możesz wybrać funkcje z innych ROM-ów. Powiedzmy na przykład, że chcę wybrać funkcję a z identyfikatorem commit „12345” z repozytorium „github.com/user/reporepo”.

przechodzisz do pakietu w lokalnym kodzie źródłowym i uruchamiasz je w Terminalu.

cd ~ / < path_to_reporepo_packages>
Git fetch https://github.com/user/reporepo
Git cherry-pick 12345

kod źródłowy linki słynnych Android niestandardowych dystrybucji ROM

CyanogenMod – https://github.com/CyanogenMod
SlimROM – https://github.com/SlimRoms
ParanoidAndroid – https://github.com/ParanoidAndroid
AOKP – https://github.com/AOKP
LiquidSmooth – https://github.com/liquidsmooth
Xylon ROM –
Ice Cold Jelly– https://github.com/IceColdJelly

Tak więc, proszę bardzo, prosty, prosty przewodnik, aby skompilować praktycznie każdy ROM oparty na Androidzie AOSP w prostych krokach 10. Podczas gdy mój przewodnik koncentruje się na CyanogenMod, możesz skompilować prawie każdy ROM AOSP tam, po prostu modyfikując linki do repozytorium. Albo możesz po prostu wybierać funkcje, zatwierdzać je, modyfikować rzeczy i tworzyć własny spersonalizowany ROM, a może udostępniać swój ROM online?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.