[ANLATIM] ROM Nasıl Derlenir?

#1
Evet arkadaşlar bildiğiniz gibi uzun süredir aktif değilim okul vb. sebeplerden ötürü ve sürekli özel mesajdan ROM nasıl derlenir, LineageOS nasıl derlenir gibi mesajlar alıyordum. Uyarılar ile başlayayım.

- Bu anlatım sadece LineageOS derlemeyi gösterecektir. Başka ROMlar device treede düzenlemeler gerektirir ve hepsini tek tek anlatamam.
- Bu anlatım sadece Snapdragon işlemcili cihazlar içindir.
- Sadece bu anlatım ile bu işi tamamen öğrenemezsiniz. Sürekli Google, Stack Overflow, Google Forums gibi yerlerden bir şeyler okuyup bilgi edinmelisiniz.
- Linux kurulu bir bilgisayar veya uzak sunucu gerekiyor. İşlemciniz, RAMiniz ve internet hızınız yeterli değilse hiç bulaşmayın. AKK gibi bir sorunumuz da var ki bu işlemleri yaparken 25 GB'a yaklaşık veri inecek. Ben bu işlemlerde Ubuntu kullanacağım.
- Başında $ işareti olan kodları terminale yazacaksınız ama $ işaretlerini yazmayacaksınız.
- Sorunlarınıza çok fazla yanıt veremeyeceğim. Google sizin dostunuz olacak.
- Cihazınız için herhangi bir şekilde kaynak kodu yoksa işlemlere başlamadan bitirin.

1- Bir terminal penceresi açın ve ROM derlemek için gerekli paketleri indirin.


Kod:
$ sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop maven openjdk-8-jdk pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline6-dev lib32z1-dev
2- Kaynakları indirebilmek için bu komutları yazın.

Kod:
$ mkdir -p ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
3- Bir dizin açın ve o dizine geçin. Ben ismini los koyacağım siz istediğinizi koyabilirsiniz.

Kod:
$ mkdir ~/los
$ cd ~/los
4- Kullanıcı adınızı ve email adresinizi ayarlayın.

Kod:
$ git config --global user.name "KullanıcıAdınız"
$ git config --global user.email "EmailAdresiniz"
5- İndirmek istediğiniz ROMun kaynakları için manifest reposunu indirin. Ben bu anlatımda LineageOS kullanacağım. Manifest repoları gennellikle ROMların Github adresinde android_manifest ya da android reposunda olur.

Kod:
$ repo init -u https://github.com/LineageOS/android.git -b cm-14.1
Burada cm-14.1 kısmı derlemek istediğimiz branch, her romda farklı olur onlara dikkat edin.

6- Repoları indirin.

Kod:
$ repo sync --force-sync
7- ~/los/.repo/local_manifests içerisinde bir roomservice.xml dosyası oluşturun.

8- roomservice.xml içerisine device tree, kernel ve vendoru koyacağız. Burada cihazınızın kod adını, işlemcinin kodunu vb bilmek önemli. Ve cihazınız için device tree yoksa derleyemezsiniz. Cihazınıza uygun device tree bulmak için github.com/lineageos adresine bakın. Vendor için de github.com/themuppets adresine bakın. Bu anlatımda kendi cihazım olan Moto G4 Plus yani athene için derleyeceğim.

Kod:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <!-- Device Trees -->
  <project name="LineageOS/android_device_motorola_athene" path="device/motorola/athene" remote="github" revision="cm-14.1" />
  <project name="LineageOS/android_kernel_motorola_msm8952" path="kernel/motorola/msm8952" remote="github" revision="cm-14.1" />
  <project name="TheMuppets/proprietary_vendor_motorola" path="vendor/motorola" remote="github" revision="cm-14.1"/>
  <project name="LineageOS/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-14.1" />
</manifest>

Burada motorola kısmı üretici ve athene cihazımın kod adı. Biraz inceleyerek kendi cihazınız için nasıl yapacağınızı anlayabilirsiniz. Dosyayı hazırladıktan sonra kaydedin ve çıkın.


9- Device tree vb indirmek için tekrar repoları indirin.

Kod:
$ repo sync --force-sync
10- Derlemeye başlamadan önce şu komutları yazın. Burada athene yerine kendi cihazınızın kod adını yazın.

Kod:
$ . build/envsetup.sh
$ breakfast athene
11- Derleme sürecini hızlandırmak için minimum 50 GB cache ayarlayın. Ben 100 GB ayarlayacağım.

Kod:
$ export USE_CCACHE=1
$ prebuilts/misc/linux-x86/ccache/ccache -M 100G
12- Java 8 kullanacağınızı belirtin.

Kod:
$ export EXPERIMENTAL_USE_JAVA8=true
13- Derlemeye başlayın. Burada athene yerine kendi cihaz kod isminizi yazın.

Kod:
$ brunch athene
14- Eğer işleminiz sorunsuz bir şekilde biterse /los/out/target klasöründe zip dosyanızı bulacaksınız.
 
Üst