Rehber [LineageOS / AOSP] Resmi Olmayan Cihazlar İçin Kaynak Kodlarından Rom Derleme Kılavuzu

mbtt

Deneyimli Üye
Deneyimli Üye
MIUI Sever
Adım
Lütfi
Cihazım
Le Pro3
Yaş
26
Konum
ankara
Katılım
22 Mayıs 2016
Konular
68
Mesajlar
102
Tepkime puanı
214
Puanları
43
DİPNOT
YAPACAĞINIZ İŞLEMDEN DOĞACAK SORUNLARDAN ŞAHSIM VE FORUM MIUI TÜRKİYE SORUMLU TUTULAMAZ.


AÇIKLAMA
Bu kılavuz ile resmi olmayan verilmeyen romları cihazınız için derleyebilirsiniz.
Ricam eğer bu kılavuzdan bir yardım aldıysanız sadece konunuzun teşekkürler kısmında benim de ismim geçsin.


ANLATIM
" $ " İle başlayan satırlar terminale girilmesi gereken kodlardır.

Gerekli Paketlerin Yüklenmesi :
Terminalinizi açın ve ;

$ sudo apt-get update

$ sudo apt-get install openjdk-7-jdk

Eğer nougat tabanında bir rom derliyorsanız "openjdk-7-jdk" yerine "openjdk-8-jdk" yazın.

Kod:
$ sudo apt-get install bc bison build-essential curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

Eğer Ubuntu 15.10 Ya Da Daha Yeni Bir Sürümdeyseniz :

Yukarıda yer alan "lib32readline-gplv2-dev" bölümünü "lib32readline6-dev" olarak değiştirin.

Eğer Ubuntu 16.04 Ya Da Daha Yeni Bir Sürümdeyseniz :

Yukarıda yer alan "libwxgtk2.8-dev" bölümünü "libwxgtk3.0-dev" olarak değiştirin.

Derleme Hazırlığı :
Not (1) : mkdir kodu klasör oluşturma kodudur. Çok civcivli geliyorsa size "mkdir bin" yazmak yerine bin adında bir klasörde oluşturabilirsiniz.

Not (2) : cd kodu klasöre gitme kodudur. Çok civcivli geliyorsa size "cd bin" yazmak yerine oluşturduğunuz bin klasöre tıklayıp açabilir daha sonra orada ayrı bir terminalde açabilirsiniz.

$ mkdir bin

$ curl > ~/bin/repo

$ chmod a+x ~/bin/repo

Daha sonra "nano ~/.bashrc" komutunu verin.Ve aşağıdaki

Kod:
export USE_CCACHE=1                                                                
export CCACHE_DIR=/android/prebuilts/misc/linux-x86/ccache

kod dizinini ekleyin.

Daha sonra bashrc dosyasını kaydedin ve çıkın.

$ git config --global user.email xxxxx -> xxxxx olarak belirttiğim yere github hesabınızın üstünde olduğu email adresini yazın.

Örneğin :
muallim@gmail.com gibi ;

$ git config --global user.name xxxxx -> xxxxx olarak belirttiğim yere github isminizi yazınız.

Örneğin : muallim gibi (Türkçe karakter içermesin.)

Derleme :
$ mkdir xxxxx -> xxxxx yerine rom ismini yazın

$ cd xxxxx -> xxxxx yerine rom ismini yazın

Örneğin :

$ mkdir lineage

$ cd lineage -> Gibi

$ repo init -u "romunuzun repo adresi" -b xxxxx -> Bu komut romun nerede olduğunu ne olduğunu terminale tanıtır.

"xxxxx" olarak belirttiğim yer derlenmek istenen rom versiyonudur.

Örneğin : cm-14.1 yada cm-13.0 gibi

$ repo sync

Eğer yukarıdaki kodun sonuna -j4 ya da -j8 gibi bir ek getirirseniz bu indirmeyi hızlandırır. Belirttiğim sayılar yerine en fazla 16 yazmanızı tavsiye ederim.

1 - Şimdi Device Tree - Kernel - Vendor İndirme kısmını okuyun ve uygulayın.

2 - Daha sonra onun aşağısında anlattığım Taban Eşitleme bölümünü okuyun ve uygulayın.

Yukarıda 1 ve 2 numaralarıyla belirttiğim bölümleri video anlatımından da takip edip görsel fikre sahip olabilirsiniz.

Daha sonra rom kaynağının anadizinine gelin ve ;

$ source build/envsetup.sh

$ lunch -> Bunu yazdıktan sonra cihazlar numaralandırılmış halde listelenir. Listeden cihazınızın numarasını bulup yazın.

$ brunch xxxxx -> xxxxx olarak belirttiğim yere cihazınızın kod adını yazın.

Örneğin : "brunch seed" gibi.

İşlem bittikten sonra :

$ cd out/target/product/xxxxx

xxxxx olarak belirttiğim yer cihaz kod adıdır.

Yukarıdaki kodu yazarak derlemesi tamamlanmış romun bulunduğu klasöre gidebilirsiniz.

Örneğin : $ cd /out/target/product/seed
-> gibi.

Device Tree - Kernel - Vendor İndirme
Şimdi cihazınızın device tree - kernel - vendor bilgilerini indireceksiniz.

Örneğin Github'dan indirmek için ;

git clone "xxxxx" -b yyyyy ccccc/zzzzz/ttttt -> şeklinde bir kod girip indirebilirsiniz.

Burada ;

xxxxx -> indirmek istediğiniz kodun - yani tree vs. - Github adresidir.

yyyyy -> İndirmek istediğiniz sürüm.

ccccc -> İndirmek istediğiniz kodun türü ( vendor - kernel ve ya device tree )

zzzzz -> indirdiğiniz kodun cihaz adıdır yani leeco markasına aitse oraya leeco, google ise google yazacaksınız.

ttttt -> cihazınızın kod adıdır yani Le Pro 3 ise zl1, GM 4G ise seed yazacaksınız.

Örneğin LeEco Le Pro 3 ( zl1 ) cihazı için gösterecek olursam bunları nasıl indireceğinizi ;

Kod:
git clone https://github.com/LineageOS/android_device_leeco_zl1 -b cm-14.1 device/leeco/zl1 

git clone https://github.com/LineageOS/android_kernel_leeco_msm8996 -b cm-14.1 kernel/leeco/msm8996

git clone https://github.com/Mbtt107/proprietary_vendor_leeco_zl1 -b cm-14.1 vendor/leeco/zl1

Örneğin ilk satırı açıklayacak olursam :

1) bölümü yukarıda gösterdiğim "xxxxx" bölümüdür.

Burada siz kendi treenizin ya da hangi kodunuzu indiriyorsanız onun linki olmalıdır.

2) cm-14.1 -> "yyyyy" bölümüdür.

Burada cm-13.0'da yazabilirsiniz eğer LineageOS 13 derliyorsanız.

3) device -> "ccccc" bölümüdür.

Burada device yerine kernel ve ya vendorda yazabilirsiniz.

4) leeco -> "zzzzz" bölümüdür.

Burada leeco yerine sizin cihazınızın markası yer almalıdır. Örneğin google ya da sony gibi.

5) zl1 -> "ttttt" bölümüdür.

Burada zl1 yerine sizin cihazınızın kod adı bulunmalıdır. Örneğin seed ya da huashan gibi.

Diğer satırlarıda inceleyip yapının nasıl olduğunu anlayabilirsiniz.

Video anlatımı bu konuda siz yardımcı olacaktır.

Tabi lineage.dependencies içindeki satırlarda bu konuda önemlidir.

Örneğin zl1 cihazının lineage.dependencies bölümünü açtığınızda aşağıdaki gibi bir şey ile karşılaşırsınız.

Kod:
[ 
 { 
   "repository": "android_device_leeco_msm8996-common", 
   "target_path": "device/leeco/msm8996-common" }, 
 },
 { 
   "repository": "android_device_qcom_common", 
   "target_path": "device/qcom/common" 
 }, 
 { 
   "repository": "android_vendor_nxp-nfc_opensource_frameworks", 
   "target_path": "vendor/nxp-nfc/opensource/frameworks" }, 
 },
{ 
   "repository": "android_vendor_nxp-nfc_opensource_libnfc-nci", 
   "target_path": "vendor/nxp-nfc/opensource/libnfc-nci" 
 }, 
 { 
   "repository": "android_vendor_nxp-nfc_opensource_Nfc", 
   "target_path": "vendor/nxp-nfc/opensource/Nfc" 
 } 
]

Bu yukarıdaki zımbırtılar gerekli paketlerdir.

Örneğin : android_device_qcom_common kısmını inceleyecek olursak ;

Bizim bu pakete derlemede ihtiyacımız olacak demektir. Bazı gerekli dosyalar içeriyor demektir.

Bu paketi LineageOS'un Github'da ki kaynağında arayarak bulabilirsiniz. Arama çubuğuna android_device_qcom_common yazmanız yeterlidir orada çıkar ve tıklar adresine gidersiniz.

Daha sonra linkini kopyalarsınız.

Bunu da yukarıda tree - vendor - kernel indirirken yaptığımız gibi indireceğiz.

" $ git clone -b cm-14.1 device/qcom/common "

gibi komut vererek indirebilir ve uygun yere atabilirsiniz.

Bu şekilde diğer belirtilenleride LineageOS kaynağından bulup aynı şekilde komut vererek indirmelisiniz.

NOT : Sondaki o " device/qcom/common " bölümünün işlevi indirilecek yeri belirtmektir.

Örneğin : orayı yazarak önce bir device klasörü oluşturursunuz. Daha sonra o klasörün içine bir qcom klasörü daha sonrada qcom klasörünün içine bir common klasörü oluşturursunuz.

Bu yukarıda anlattığım tree - vendor - kernel kısımları içinde geçerlidir.

Örneğin : kernel/leeco/msm8996 yazarak kernel adlı bir klasör oluşturup daha sonra onun içine bir leeco adlı klasör daha oluşturup onun içinede bir msm8996 klasörü oluşturursunuz.

Peki bu klasör isimleri nasıl belirleniyor diye sorarsanız githubdaki o bölümün ismine bakmanız yeterlidir.

Yani device_qcom_common bölümünde kırmızı ile belirttiğim yere bakarsanız ismini nereden aldığını anlarsınız.

Diğer kaynakları da nasıl indireceğinizi ve nasıl isimlendireceğinizi bu şekilde çözersiniz.


Bütün kaynakları bu şekilde indireceksiniz.

Taban Eşitleme
Bu aşamada aşağıdaki 2 dosya ile ilgileneceğiz :

1) lineage.mk

2) lineage.dependencies



1 ) "lineage.mk" Düzenlemesi

lineage.mk -> xxxxx.mk olarak adlandırılacak xxxxx ise derlemek istenen rom ismidir.

Örneğin : SlimRom derliyorsanız "slim.mk" olacak.

Daha sonra ismini xxxxx.mk olarak değiştirdiğimiz yani slim.mk olarak değiştirdiysek o dosyanın içine giriyoruz.

Daha sonra cm yazan yerlere derlenmek istenen rom ismini yazacaksınız.

Örneğin : Bu ".mk" dosyasının içinde şöyle satırlarla karşılaşacaksınız :

" $(call inherit-product, vendor/cm/config/common_full_phone.mk) " gibi.

Yukarıdaki satırda yeşil ile belirttiğim cm bölümünün yerine derlemek istediğiniz romun ismini yazacaksınız. Yani aşağıdaki gibi görünecek.

" $(call inherit-product, vendor/slim/config/common_full_phone.mk) "

Ayrıca "PRODUCT_NAME := lineage_xxxxx" satırında da "lineage" yazan yere derlenmek istenen romun ismini yazacaksınız.

Yani böyle görünecek : "PRODUCT_NAME := slim_xxxxx"

Burada xxxxx olarak belirttiğim yer sizin cihazınızın kod ismidir.

Yani slim_zl1 ya da slim_seed gibi görünür.

Ayrıca roma göre değişen protokoller vardır.

Örneğin : xosp romunda ekstra eklenmesi gereken bir satır vardır. Bu satır rom derlemesi için gereklidir eğer böyle farklılıklar içeren romları derliyorsanız araştırmanızı ona göre yapın.

Mesela o romu official olarak alan cihazların treelerini inceleyip bu şekilde karşılaştırmanızı yapabilirsiniz.



2 ) "lineage.dependencies" Düzenlemesi


lineage.dependencies dosyasının ismini de derlemek istediğiniz romun ismi gibi yapın. slim.dependencies gibi.



Bu aşamadan sonra LineageOS treesi derlenmek istenen rom tabanıyla eşit olacak.

LineageOS İçin :
Öncelikle Gerekli Paketlerin Yüklenmesi ve Derleme Hazırlığı bölümlerini uygulayın.

Daha sonra ;

$ mkdir lineage

$ cd lineage

$ repo init -u -b cm-14.1

$ repo sync -> Bu kod ise terminale tanıtılan romun kaynak kodlarını indirmeye başlar.

1 - Şimdi Device Tree - Kernel - Vendor İndirme kısmını okuyun ve uygulayın.

2 - Daha sonra onun aşağısında anlattığım Taban Eşitleme bölümünü okuyun ve uygulayın.

Yukarıda 1 ve 2 numaralarıyla belirttiğim bölümleri video anlatımından da takip edip görsel fikre sahip olabilirsiniz.


CCache aktifleştirmek için :

Burası illede olsun denilen bir yer değildir.Ancak işinizi çok kolaylaştırır.

Öncelikle ne olduğunu anlamakta fayda var.

CCache bir nevi hızlandırmadır.Önceden zaten inşaa edilmiş dosyaları tekrar inşaa etmek yerine onları uygun şekilde yamalayıp hazırlar.


Bu sayede onlarında inşaasına zaman harcanmaz.

Aktifleştirmek için :

$ echo "export USE_CCACHE=1" >> ~/.bashrc

$ ~/lineage/prebuilts/misc/linux-x86/ccache/ccache -M 50G


$ source build/envsetup.sh[font=tahoma,verdana,arial,sans-serif] [/font]

$ lunch -> Bunu yazdıktan sonra cihazlar numaralandırılmış halde listelenir. Listeden cihazınızın numarasını bulup yazın.

$ [font=tahoma,verdana,arial,sans-serif]brunch xxxxx-> xxxxx olarak belirttiğim yer cihazınızın kod adıdır.[/font]
Örneğin : "brunch zl1" gibi. Bu kod derleme işlemini başlatır.

Bittiğinde isterseniz ;


cd out/target/product/yyyyy

koduyla derlemesi biten romun bulunduğu klasöre gidebilirsiniz.

Eğer el ile yaparım diyorsanız ;

out -> target -> product -> yyyyy yolunu izleyerek gidebilirsiniz.

Paranoid Android İçin:
Öncelikle Gerekli Paketlerin Yüklenmesi ve Derleme Hazırlığı bölümlerini uygulayın.

Daha sonra ;

$ mkdir pa

$ cd pa

$ repo init -u -b nougat-mr2 ya da hangi sürüm istiyorsanız onu yazın.

$ repo sync

1 - Şimdi Device Tree - Kernel - Vendor İndirme kısmını okuyun ve uygulayın.

2 - Daha sonra onun aşağısında anlattığım Taban Eşitleme bölümünü okuyun ve uygulayın.

3 - Paranoid Android'in derleme protokolleri farklı olduğu için aşağıdakileri de 2. adımdan sonra uygulamalısınız.

İlk olarak vendor/pa/products dizinine gidin.

a1) AndroidProducts.mk dosyasını açın ve cihazların içerisine kendi cihazınızı kaydedin.

Yine her zaman belirttiğim gibi xxxxx cihazınızın kod adıdır.

"$(LOCAL_DIR)/xxxxx/pa_xxxxx.mk" yani bu satır gibi bir satır ilave etmeniz gerekiyor.

a2) Aynı klasöre kendi cihazınızın adını taşıyan bir klasör açın

Örneğin: ugglite gibi.

a3) Açtığınız klasörünüzün içine bir pa_xxxxx.mk ve birde pa.dependencies dosyası ekleyin.

pa_xxxxx.mk dosyası sizin cihazınızın basitçe lineage.mk dosyası gibi olmalıdır.

Ardından bu pa_xxxx.mk dosyasını kendi cihazınıza uygun olarak düzenleyin.
Bu kısımda taban eşitlemede anlattım değişiklikleri yapacaksınız. Yine resmi bir cihazdan yapılması gereken değişiklikleri öğrenebilirsiniz.

a4) Ardından pa dizinine geri gelip vendorsetup.sh dosyasını açın ve size yukarıda anlattığım gibi lunch kodunuzu ekleyin.

Yukarıda 1 ve 2 numaralarıyla belirttiğim bölümleri video anlatımından da takip edip görsel fikre sahip olabilirsiniz.

$ source build/envsetup.sh

$ lunch -> Bunu yazdıktan sonra cihazlar numaralandırılmış halde listelenir. Listeden cihazınızın numarasını bulup yazın.

$ ./rom-build.sh xxxxx -> xxxxx olarak belirttiğim yer cihazınızın kod adıdır.

Örneğin : "./rom-build.sh zl1" gibi. Bu kod derleme işlemini başlatır.

Bittiğinde isterseniz ;

cd $OUT

koduyla derlemesi biten romun bulunduğu klasöre gidebilirsiniz.

Eğer el ile yaparım diyorsanız ;

out -> target -> product -> yyyyy yolunu izleyerek gidebilirsiniz.

VİDEO ANLATIMI


 
Son düzenleme:

halilgurbuz

Elit Üye
Elit Üye
MIUI Sever
SMS Onaylı
Adım
Halil
Cihazım
Poco X5 Pro 5G
Meslek
Bilişim ırgatı
Yaş
46
Konum
İstanbul
Katılım
24 Haziran 2017
Konular
193
Mesajlar
3.192
Çözümler
2
Tepkime puanı
6.234
Puanları
238
Kalbimi fetheden bir rom bulamadım.
Sonunda giricem bu işlere o olcak :D
 

boranoglu

Yeni Üye
Yeni Üye
MIUI Sever
Adım
Anıl
Cihazım
Gm 5
Yaş
34
Konum
Ordu
Katılım
27 Haziran 2019
Konular
0
Mesajlar
2
Tepkime puanı
0
Puanları
1
mbtt youtube videolar gizlidir, kullanılamaz deniyor. Kontrol etmen mümkün mü acaba ?
 

bluestorm02

Usta Üye
Usta Üye
MIUI Sever
SMS Onaylı
Adım
Umut
Cihazım
Redmi 5 plus
Konum
Türkiye
Katılım
14 Ekim 2018
Konular
9
Mesajlar
1.127
Tepkime puanı
447
Puanları
98
Bunu her rom için yapabilirsiniz bu rom buildleme direkt
 

mbtt

Deneyimli Üye
Deneyimli Üye
MIUI Sever
Adım
Lütfi
Cihazım
Le Pro3
Yaş
26
Konum
ankara
Katılım
22 Mayıs 2016
Konular
68
Mesajlar
102
Tepkime puanı
214
Puanları
43
mbtt youtube videolar gizlidir, kullanılamaz deniyor. Kontrol etmen mümkün mü acaba ?
Yenileyemedim hocam konu düzenleme yetkim sanırım yok.
Medyaları görmek için kayıt olmalısınız
Size linki şöyle vereyim. Buradan bakın. İlk videolar daha sağlıklıydı neden kaldırıldı fikrim yok. Kusura bakmayın.
 

devrimsel

Yeni Üye
Yeni Üye
MIUI Sever
Adım
mustafa
Cihazım
Realme 3 pro
Konum
Adana
Katılım
20 Kasım 2016
Konular
0
Mesajlar
15
Tepkime puanı
10
Puanları
3
Yenileyemedim hocam konu düzenleme yetkim sanırım yok.
Medyaları görmek için kayıt olmalısınız
Size linki şöyle vereyim. Buradan bakın. İlk videolar daha sağlıklıydı neden kaldırıldı fikrim yok. Kusura bakmayın.
Hocam benim telefonum için Android 9 aex var. Android 10 aex nasıl derleyebilirim? Kernel ve vendor sourcelari var. Android 9 için rom derlemeyi biliyorum.
 

blackrow67

Kıdemli Üye
Kıdemli Üye
MIUI Sever
SMS Onaylı
Adım
DoğuHan
Cihazım
Xiaomi Mi5
Yaş
30
Konum
Konya
Katılım
8 Mart 2016
Konular
16
Mesajlar
270
Çözümler
1
Tepkime puanı
168
Puanları
58
CodeAurora kaynaklarını nasıl kullanabiliriz?
 
Üst Alt