AOSP Android 15'i kaynak kodlarından indirmek ve derlemek — kısa cevap
Kısaca: Resmi AOSP kaynak kodlarını repo aracıyla (android.googlesource.com) alırız, senkronize ederiz ve standart build/envsetup.sh → lunch → m zincirini çalıştırırız. Aşağıda hazır komut seti, donanım gereksinimleri ve tipik hataları çözme ipuçları yer alıyor.
Kaynak kodları nereden alınır ve nasıl indirilir
Resmi kaynak — AOSP (android.googlesource.com üzerindeki depolar). Android 15 için çalışma senaryosu:
- repo'yu kurun (örnek):
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
- Klasör oluşturun ve Android 15 dalı için manifest'i başlatın:
mkdir ~/aosp15 && cd ~/aosp15
repo init -u https://android.googlesource.com/platform/manifest -b android-15.0.0_r18
- Kaynak kodlarını indirin (onlarca-yüzlerce gigabayt ve saatler sürer):
repo sync -c -j$(nproc) --force-sync
Bayraklar: -c (current-branch, alan tasarrufu sağlar), -j$(nproc) — paralellik. init işleminden önce resmi AOSP sitesinde geçerli dalı kontrol edin.
Alan tasarrufu için repo sync -c ve --current-branch kullanın, ancak tam özellik seti için tam klonlama daha iyidir.
Ortam hazırlığı ve bağımlılıklar
Minimum öneriler:
- Ubuntu 20.04+ (veya başka desteklenen bir dağıtım)
- 16+ GB RAM (önerilen 32+), 300+ GB SSD, 8+ çekirdek CPU
Temel paketlerin kurulumu (Ubuntu/Debian örneği):
sudo apt update
sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev \
gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev \
x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils \
xsltproc unzip fontconfig python3 openjdk-11-jdk
Android 15 Java 11 gerektirir:
sudo apt install openjdk-11-jdk
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Rust'ta yazılmış bileşenleri (yeni derleme sistemi parçaları) derliyorsanız, rustup ve gerekli toolchain'i kurun:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
rustup toolchain install 1.75.0
rustup target add aarch64-linux-android
Adım adım derleme
- Derleme ortamını yapılandırın:
source build/envsetup.sh
- Hedefi seçin (örnek — arm64 emülatörü veya Pixel):
lunch aosp_arm64-eng # ARM64 emülatörü
# veya
lunch aosp_cf_x86_64_phone-eng # x86_64 emülatörü (daha hızlı)
# Pixel için — ilgili lunch hedefini kullanın (varsa)
- Derlemeyi başlatın:
m # tam derleme
# veya sadece kernel derleyin:
m kernelimage
Çıktı imajları out/target/product/
fastboot flashall -w
(Belirli telefonlar için ek adımlar gerekebilir: factory image, imajların imzalanması vb.)
Cihazı flashlamak ve bootloader kilidini açmak verileri siler ve garanti kaybına yol açabilir. Yedeklerinizi alın.
Sık karşılaşılan hatalar ve çözümleri
- Repo sync takılıyor veya çok yavaş:
--force-syncile tekrar deneyin, git zaman aşımını artırın, bağlantıyı ve disk G/Ç'sini kontrol edin. - Derleme sırasında yetersiz bellek: swap ekleyin (ilk derlemeler için 32 GB önerilir) veya daha fazla RAM'e sahip makine kullanın.
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
- Java sürümü: PATH'te kesinlikle Java 11 olduğundan emin olun; Soong hataları genellikle yanlış sürümle ilgilidir.
- Soong/Blueprint hataları:
out/soong.loggünlüklerini inceleyin ve detaylı izleme içinm -j1ile derlemeyi tekrarlayın. - JACK server: Java builder sorunu varsa:
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
SSS
- Derleme ne kadar sürer? Ortalama bir makinede ilk tam derleme 4–12 saat; kaynak kodlarını indirme 2–6 saat sürer (ağa bağlı olarak).
- GApps gerekli mi? AOSP Google hizmetlerini içermez. Eklemek için derlemeden sonra üçüncü taraf paketleri kullanın, ancak bu AOSP kapsamının dışındadır.
- Pixel için nasıl derlenir? İlgili lunch hedefini bulun (örneğin aosp_komodo-eng) veya özel bileşenler için üretici/bakıcı depolarını kullanın.
- Günlükler nerede görülür? Ana günlükler: derleme konsolu,
out/soong.log,out/target/product/<device>/boot.log.
Gerekirse, yapılandırmanıza (CPU, RAM, hedef cihaz) göre kesin komut setini oluşturabilir ve hangi dallar/hedefleri seçmeniz gerektiği konusunda yardımcı olabilirim.