Adım adım AOSP derlemesi: Kaynak kodların indirilmesinden hazır imaja kadar
Kısa cevap: Resmi AOSP manifest dosyalarını indirin ve repo aracını kullanın (repo init -b
Kaynak kodları ve manifest dosyalarını nereden almalı
- Resmi AOSP kaynağı — Google'ın manifest dosyaları ve depolarıdır (gerekli Android sürümü için resmi manifest dosyalarını kullanın).
- Topluluklar (LineageOS, diğer fork'lar) device/vendor örnekleri ve yamalar açısından faydalıdır, ancak temel derleme için resmi dallara güvenin.
- Yerel/bölgesel yansılar ve git barındırma hizmetlerindeki yansılar, yavaş ağ bağlantısında indirmeyi hızlandırır, ancak dal uyumluluğunu kontrol edin.
Ortamın hazırlanması
- İşletim Sistemi: 64-bit Linux (Ubuntu LTS/ Debian — sürümler sürüm belgelerinde belirtilmiştir).
- Disk: Kaynak kodlar, out dizini ve önbellek için 250–400+ GB boş alan.
- Bellek/CPU: 16–32+ GB RAM ve çok çekirdekli CPU.
- Paketlerin kurulması: git, python3, openjdk (sürüme göre), make, clang/gcc, ccache, gerekirse 32-bit kütüphaneler için araçlar.
- JAVA_HOME ve PATH değişkenlerini ayarlayın; git'in yapılandırıldığından emin olun (user.name, user.email).
- Öneriler: ccache'i etkinleştirin, kaynak kodlar için ayrı bir disk/bölüm ayırın.
Sürüm belgelerinde tam JDK sürümünü ve paket listesini kontrol edin — JDK uyumsuzluğu sık karşılaşılan hata nedenlerinden biridir.
repo kurulumu, başlatma ve senkronizasyon
- repo betiğini ~/bin dizinine indirin ve çalıştırılabilir yapın.
- Boş bir klasör oluşturun, örneğin ~/android/aosp.
- Başlatma: repo init -u <manifest_URL> -b <sürüm_dalı>
- Dal seçimi: İlk derleme için master yerine kararlı sürüm etiketi (örneğin android-14.0.0_rX) tercih edilmelidir.
- Senkronizasyon: repo sync -j
- İlk senkronizasyon saatler sürebilir ve yüzlerce gigabayt veri indirebilir. Paralellik (-j) kullanın, ancak bağlantınızı aşırı yüklemeyin.
- Bağlantı kesintilerinde repo sync eksik depoların indirilmesini tekrarlayacaktır.
Kaynak kod yapısı ve derleme konfigürasyonunun seçimi
- Ana dizinler: build/, frameworks/, system/, packages/, hardware/, device/, kernel/, vendor/.
- Derleme hazırlığı:
- source build/envsetup.sh
- lunch <ürün> (format: aosp_<kod_adı>-userdebug, emülatör için generic_x86_*)
- Seçenekler: eng (maksimum debug), userdebug (geliştirme için uygun), user (sürüm).
- Derleme komutları:
- m veya make (OTA arşivi oluşturmak için m otapackage kullanın)
- Hızlandırmak için: make -j
, ancak RAM/sıcaklığı izleyin.
Device, vendor ve kernel — gerçek cihaz için nasıl hazırlanır
- Device tree: device/<satıcı>/<kod_adı> ürün konfigürasyonunu içerir (BoardConfig.mk, device.mk, AndroidProducts.mk).
- Vendor blob'ları: Cihazdan çıkarılır (adb pull + extract-files.sh betikleri) veya üreticinin resmi paketlerinden alınır. Bunlar olmadan donanım bileşenleri (modem, kamera, GPU) çalışmayabilir.
- Kernel: Çekirdek kaynak kodları genellikle üretici tarafından yayınlanır; çekirdek ayrı olarak derlenir ve boot.img içine dahil edilir veya prebuilt olarak kullanılır.
- İpuçları: Modeliniz için topluluklarda hazır device/vendor arayın — bu portlama sürecini hızlandıracaktır.
Tanımadığınız bir cihaz için geliştirici dalını hemen derlemeye çalışmayın — kararlı sürüm ve emülatör ile başlayın.
Test etme ve yükleme
- Emülatör: UI ve framework'ü kontrol etmek için güvenli olan, derleme sonrası elde edilen generic imajları yerleşik emulator üzerinden kullanın.
- Gerçek cihaz:
- Bootloader'ı kilidini açın.
- Fastboot: boot/ system/ vendor/ ve diğer imajları flashlayın (liste cihaza bağlıdır).
- Alternatif: otapackage → recovery modunda adb sideload.
- Her zaman bootloader/bölüm tablosu sürüm uyumluluğunu ve ilgili vendor/kernel varlığını kontrol edin.
Sık karşılaşılan hatalar
- Yanlış JDK sürümü → Java/Jack/Soong derleme hatası.
- Eksik bağımlılıklar (32-bit kütüphaneler, ncurses, zlib).
- Yetersiz disk alanı — derleme anlamlı bir log olmadan kesilir.
- Ağ nedeniyle repo sync kesintisi — yeniden başlatın, yansı kullanın.
- Device/vendor uyumsuzluğu — cihaz önyükleme döngüsüne (bootloop) girer.
SSS
- S: Derleme ne kadar sürer?
C: Güçlü bir makinede (çok çekirdekli, 32+ GB RAM) temiz derleme 1–6 saat sürebilir; zayıf donanımda çok daha uzun sürer. - S: Vendor blob'ları olmadan AOSP derleyebilir miyim?
C: Evet, emülatör ve birçok işlev için mümkündür; ancak gerçek cihazda sürücüler (modem, kamera) kaybolabilir. - S: Tekrarlanan derlemeleri nasıl hızlandırabilirim?
C: ccache, artımlı derleme (m <modül>), çoklu işlem kullanın ve out/ dizinini tamamen temizlemekten kaçının. - S: Telefonum için device tree'yi nereden bulabilirim?
C: Topluluk depolarında (fork'lar, GitHub/GitLab) arama yapın — popüler modeller için genellikle hazır device/vendor bulunur.
AOSP büyük bir projedir, ancak adım adım yaklaşım: ortamı hazırlamak, manifesti doğru başlatmak, kaynak kodları senkronize etmek, device/vendor/kernel'ı yapılandırmak ve imajı derlemek — test ve geliştirme için çalışan bir firmware veya emülatör imajı elde etmenizi sağlayacaktır.