Adım adım AOSP derlemesi: Kaynak kodların indirilmesinden hazır imaja kadar

Kerem Aydın·7 Temmuz 2026·⏱4 dk

Kısa cevap: Resmi AOSP manifest dosyalarını indirin ve repo aracını kullanın (repo init -b ; repo sync), Linux ortamını hazırlayın (doğru JDK, bağımlılıklar, yeterli disk alanı ve RAM), source build/envsetup.sh → lunch → make (veya m/m otapackage) komutlarını çalıştırın. Gerçek bir cihaz için ayrıca device/vendor ağacı ve ikili blob'lara (veya kernel'a) ihtiyacınız vardır. Aşağıda detaylı pratik bir plan sunulmaktadır.

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

  1. repo betiğini ~/bin dizinine indirin ve çalıştırılabilir yapın.
  2. Boş bir klasör oluşturun, örneğin ~/android/aosp.
  3. 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.
  4. 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.