Kategoriat
Lab-blogi

Android kääntäminen lähdekoodista

Tässä postauksessa käydään vähän läpi miten Android Open Source Illusion Project custom com käännetään lähdekoodista Oneplus 6:lle eli enchiladalle. Tässä ei opeteta muokkaamaan romia.
Miksi rom sitten ylipäänsä tulisi kääntää itse? Syitä on toki monia, yksi tärkein on toki se että jos laitteelle ei ole saatavilla valmiiksi käännettyä/ylläpidettyä pakettia, voit lisätä haluamasi custom kernelin mukaan mikäli tiedät sen olevan yhteensopiva ja sen lähdekoodi on saatavilla, ja tietysti tekemisen ja oppimisen ilo.

Mitä tarvitset?

-min. 4-ydin prosessori
-min. 8GB RAM (suosittelen 16GB)
-levytilaa vähintään 200GB (suosittelen 500GB)
-nopea internetyhteys

Mikäli omassa koneessasi ei ns. riitä paukut, suosittelen kokeilemaan Google Cloud Platformia. Sinne rekisteröityessä saa 300$ edestä ilmaisia crediittejä. Siellä pystyy kääntämään Androidia ja toki tekemään paljon muutakin. Googlella on aika nopeat linjat niin sourcetkin latautuu nopeasti. Itsekin olen siellä muutaman romin Debian alustalla kääntänyt.

Tässä ohjeessa käytetään alustana yleisesti muista ohjeista poiketen Arch linuxia, sinällään linux jakelulla ei ole mitään merkitystä mutta yleensä ohjeissa neuvotaan käyttämään aloittelijaystävällisempää Debian pohjaista Ubuntua joten tarkista tarvittavat asennuspaketit jakelun ohjeista mikäli käytät muuta kuin Arch tai Manjaro linuxia.
Itse suosittelen kokeilemaan Arch linuxin asennusta tai Manjaroa joka on aloittelijaystävällisempi mutta koska olet päättänyt kääntää Androidin, ei varmasti Archin asennuskaan ole ylitsepääsemätön ongelma sivuiltani löytyy ohjeet siihen.

Asennetaan kääntämiseen tarvittavia paketteja, pari pakettia asennetaan AUR:sta joten käytetään pikaur pakettimanageria.
pikaur -S lib32-gcc-libs git gnupg flex bison gperf sdl wxgtk2 squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt python2-virtualenv bc rsync ncurses5-compat-libs lib32-zlib lib32-ncurses lib32-readline lib32-ncurses5-compat-libs xml2A lzop java11-openjdk pngcrush imagemagick

Jos saat virheilmoituksen ”One or more PGP signatures could not be verified” katso yläpuolelta ”unknown public key” kopio se ja kirjoita esim.
gpg --recv-key 9B45BE1FC91FD60D
Nyt asennuksen pitäisi onnistua kun key on lisätty. Esimerkissä oleva key on oma julkinen pgp keyni.

Configuroidaan githubaccount, jos sinulla ei ole vielä sellaista voit luoda sen täältä. Github käyttöön hyvä ohje löytyy täältä. Ja tässä lyhyt ohje omien repojen luontiin.

git config --global user.name "nimesi"
git config --global user.email "github tunnuksesi sähköpostiosoite"
git config --global core.autocrlf input
git config --global core.safecrlf true

Jos käytät kotihakemistoa: (tarkista ensin että on tarpeeksi tilaa)
mkdir -p ~/bin
mkdir -p ~/android/aoisp


Itse käytän toista levyä jonka olen mountannut /bhdd
mkdir -p /bhdd/bin
mkdir -p /bhdd/android/aoisp


curl https://storage.googleapis.com/git-repo-downloads/repo > /bhdd/bin/repo (tarkista että lataat oikeaan hakemistoon)
Ohjeet repo komennon käyttöön

chmod a+x /bhdd/bin/repo

cd /bhh/android/aoisp repo init -u
repo init -u git://github.com/AOSiP/platform_manifest.git

-b ten
repo sync Tässä vaiheessa ladataan yli 30GB dataa

Aloitetaan kääntäminen

cd /bhdd/android/aosip/ (mihin latasit sourcen)
source build/envsetup.sh
lunch aosip_device-userdebug
time mka kronic

Kääntämisen alussa voi ilmetä virheitä ja virheilmoitusta googlettamalla yleensä löytyy ratkaisu ongelmaan.
Laitteistosta riippuen kääntäminen kestää kuitenkin useita tunteja, omalla kokoonpanollani Intel i5-4460/16GB 5h 23min. 🙂

Tässä olen soveltanut sekä Aosip:n omaa ohjetta että Lineagen ohjetta. Samalla periaatteella onnistunee minkä tahansa Romin kääntäminen, yleensä ne ovat joko Omni tai Lineage pohjaisia. Aosip on Lineage pohjainen. Ainoastaan itse kääntöprosessissa tarvittavat komennot voivat erota eri romien ja/tai versioiden kesken mutta ne kuvataan yleensä romin ohjeissa tai vähintään Githubissa.
Lineagen ohjeessa on muutamia ”hienosäätöjä” jotka olen itse tarkoituksella jättänyt pois, voit halutessasi kokeilla itse niiden vaikutusta prosessiin.