Bilgi Resmi Olmayan Cihazlar İçin Kaynak Kodlarından Rom Derleme Kılavuzu

mbtt

Üye
Katılım
4 Ara 2018
Mesajlar
45
Tepkime puanı
419
Puanları
53
Çevrimdışı
DİPNOT
YAPACAĞINIZ İŞLEMDEN DOĞACAK SORUNLARDAN ŞAHSIM VE FORUM GSMTURKEY SORUMLU TUTULAMAZ.


AÇIKLAMA
Bu kılavuz ile resmi olmayan verilmeyen romları cihazınız için derleyebilirsiniz.

Ricam eğer bu kılavuzdan en ufak 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.
Gizli İçerik
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 ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

Eğer Ubuntu 15.10'den Daha Eski Bir Sürümdeyseniz :

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

Eğer Ubuntu 16.04'den Daha Eski Bir Sürümdeyseniz :

Yukarıda yer "libwxgtk3.0-dev" alan bölümünü "libwxgtk2.8-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 https://storage.googleapis.com/git-repo-downloads/repo > ~/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 : [email protected] 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) LineageOS/android_device_leeco_zl1 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 LineageOS/android_device_qcom_common -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 https://github.com/LineageOS/android_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 sonracm 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.dependenciesdosyasının ismini de derlemek istediğiniz romun ismi gibi yapın. slim.dependencies gibi.



Bu aşamadan sonraLineageOStreesi 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 LineageOS/android -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.

$ 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 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

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 AOSPA/manifest -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.

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

Daha sonra ;

$ mkdir omni

$ cd omni

$ repo init -u https://github.com/omnirom/android.git -b nougat-mr2 gibi 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 - Omnirom'un derleme protokolleri farklı olduğu için aşağıdakileri de 2. adımdan sonra uygulamalısınız.

İlk olarak device treenin bulunduğu dizinine gidin.


a1) lineage.mk dosyasını omni_xxxx.mk olarak adlandırın.

xxxxx -> cihazınızın kod adını temsil etmektedir. Örneğin: omni_zl1.mk gibi yeniden adlandıracaksınız.

Kod:
$(call inherit-product, vendor/cm/config/common_full_phone.mk)


Ayrıca bu dosya içerisinden yukarıdaki gibi olan satırı

Kod:
$(call inherit-product, vendor/omni/config/common.mk)


bunun gibi düzenleyip

aşağıdaki 2 satırıda ekleyeceksiniz.

Kod:
$(call inherit-product, vendor/omni/config/gsm.mk)

TARGET_BOOTANIMATION_SIZE := ekran x çözünürlüğü


TARGET_BOOTANIMATION_SIZE := -> Bu kısmın karşısına cihazınızın çözünürlüğünü yazın.

Örneğin:

TARGET_BOOTANIMATION_SIZE := 1080x1920

Bunun gibi.

Ayrıca

lineage_xxxxx gibi görünen satırı omni_xxxxx gibi görünecek şekilde yeniden düzenleyin. (xxxxx tekrar belirteyim cihaz kod adını temsil etmektedir.)

Örneğin: lineage_zl1 -> omni_zl1 gibi


a2) AndroidProducts.mk dosyası yoksa oluşturun var ise içini açıp:

Kod:
PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/device.mk \
    $(LOCAL_DIR)/omni_xxxxx.mk

yukarıdaki gibi görünecek şekilde düzenleyin.


a3) BoardConfig.mk

1-) Aşağıdaki gibi 3 satırı kendi işlemcinize göre düzenleyip bu dosya içerisine ekleyin.

Kod:
TARGET_QCOM_AUDIO_VARIANT := caf-msm89**
TARGET_QCOM_DISPLAY_VARIANT := caf-msm89**
TARGET_QCOM_MEDIA_VARIANT := caf-msm89**


Örneğin:

Kod:
TARGET_QCOM_AUDIO_VARIANT := caf-msm8996
TARGET_QCOM_DISPLAY_VARIANT := caf-msm8996
TARGET_QCOM_MEDIA_VARIANT := caf-msm8996


gibi.


2-) Aşağıdaki satır eğer yok ise ekleyin. Var ise dokunmayın. Ancak bazı cihazlarda bu satıra bağlı olarak hatalar çıkabiliyor. Eğer hata çıkarsa Google üzerinden kısa bir araştırma ile muhtemelen bu satırın kaldırılması gerektiği sonucuna ulaşırsınız. Dolayısıyla eğer hata çıkarsa bu satırı kaldırıp tekrar derlemeyi başlatın.

Kod:
BOARD_USES_QCOM_HARDWARE := true


a4) device.mk

Eğer dilerseniz:

Kod:
PRODUCT_PACKAGES += \
    com.android.future.usb.accessory

# Live Wallpapers
PRODUCT_PACKAGES += \
    LiveWallpapers \
    LiveWallpapersPicker \
    VisualizationWallpapers \
    librs_jni

bu satırları ekleyerek bazı Omni içerikli özelliklerinde (örneğin hareketli duvar kağıdı gibi) derlenmesini sağlamış olursunuz.

Ardından Lineage kısmından hatırlayacağınız üzere aşağıdaki komutları takip ederseniz romu derlemeye başlarsınız.

$ 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 yer cihazınızın kod adıdı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
 
DİPNOT
YAPACAĞINIZ İŞLEMDEN DOĞACAK SORUNLARDAN ŞAHSIM VE FORUM GSMTURKEY SORUMLU TUTULAMAZ.


AÇIKLAMA
Bu kılavuz ile resmi olmayan verilmeyen romları cihazınız için derleyebilirsiniz.

Ricam eğer bu kılavuzdan en ufak 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.
[Gizli içerik]
Teşekkür ederim
 
Geri
Üst Alt