AOSP geliştirme (9.0 veya sonraki sürümler) için kurulum

Android kaynağının main dalını indirip derlemeden önce, donanımınızın gerekli gereksinimleri karşıladığından ve gerekli yazılımın doğru şekilde yüklendiğinden emin olun. Ayrıca aşağıdaki terimlere de aşina olmanız gerekir:

Git
Git, ücretsiz ve açık kaynaklı bir dağıtılmış sürüm kontrol sistemidir. Android; dallara ayırma, kaydetme, fark oluşturma ve düzenleme gibi yerel işlemler için Git'i kullanır. Git'i öğrenme konusunda yardım almak için Git dokümanlarına bakın.
Kod deposu
Repo, birden çok Git deposunda karmaşık işlemler gerçekleştirmeyi kolaylaştıran, Git etrafında kullanılan bir Python sarmalayıcıdır. Depo, tüm sürüm kontrol işlemleri için Git'in yerini almaz. Yalnızca karmaşık Git işlemlerinin daha kolay tamamlanmasını sağlar. Repo, Git projelerini Android süper projesinde toplamak için manifest dosyalarını kullanır.
Manifest dosyası
Manifest dosyası, Android kaynağındaki çeşitli Git projelerinin bir AOSP kaynak ağacında yerleştirildiği XML dosyasıdır.

Donanım gereksinimlerini karşılayın

Geliştirme iş istasyonunuz şu donanım gereksinimlerini karşılamalı veya aşmalıdır:

  • 64 bit x86 sistem.

  • Çıkış yapmak ve kodu derlemek için en az 400 GB boş disk alanı (ödeme için 250 GB + derleme için 150 GB).

  • En az 64 GB RAM. Google, Android'i geliştirmek için 64 GB RAM'e sahip 72 çekirdekli makineler kullanır. Bu donanım yapılandırmasında Android'in tam olarak oluşturulması yaklaşık 40 dakika, artımlı Android derlemesi ise yalnızca birkaç dakika sürer. 64 GB RAM'e sahip 6 çekirdekli bir makinede tam bir derleme oluşturmak ise yaklaşık 6 saat sürer.

İşletim sistemi gereksinimlerini karşılayın

Geliştirme iş istasyonunuz, GNU C Library (glibc) 2.17 veya sonraki bir sürümle birlikte 64 bit Linux dağıtımlarını çalıştırmalıdır.

Gerekli paketleri yükleyin

Android 11 veya sonraki bir sürümü derlemek için Ubuntu 18.04 veya sonraki bir sürümü kullanmanız gerekir. Ubuntu 18.04 veya sonraki sürümler için gerekli paketleri yüklemek üzere aşağıdaki komutu çalıştırın:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

Bu komut, yüklenen paketler arasında AOSP kaynağını indirmek için kullanılan Git'i yükler.

Gerekli yazılımı yükleyin

AOSP ile çalışabilmeniz için önce OpenJDK, Make, Python 3 ve Repo yüklemeniz gerekir. Android'in AOSP ana dalı, OpenJDK, Make ve Python 3'ün önceden oluşturulmuş sürümleriyle birlikte gelir. Bu nedenle, ek yükleme adımları gerekmez. Aşağıdaki bölümde Repo'nun nasıl yükleneceği açıklanmaktadır.

Depo'yu yükleme

Repo'yu yüklemek için şu adımları uygulayın:

  1. Mevcut paket bilgilerini indirin:

    sudo apt-get update
    
  2. Depo başlatıcıyı yüklemek için aşağıdaki komutu çalıştırın:

    sudo apt-get install repo
    

    Repo başlatıcı, ödeme işlemini başlatan ve Repo aracının tamamını indiren bir Python komut dosyası sağlar.

    İşlem başarılı olursa 4. adıma geçin.

  3. (İsteğe bağlı) Aşağıdaki komut dizilerini kullanarak Repo'yu manuel olarak yükleyin:

    export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
    curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
    gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo
    

    İlk üç komut bir geçici dosya oluşturur, Repo'yu dosyaya indirir ve sağlanan anahtarın gerekli anahtarla eşleştiğini doğrular. Bu komutlar başarılı olursa son komut Depo başlatıcıyı yükler.

  4. Depo başlatıcı sürümünü doğrulayın:

    repo version
    

    Çıkışta 2.5 veya sonraki bir sürüm belirtilmelidir. Örneğin:

    repo launcher version 2.40

Alternatif bir çıkış dizini ayarlayın

Varsayılan olarak her derlemenin çıkışı, eşleşen kaynak ağacının out/ alt dizininde depolanır. OUT_DIR ortam değişkenini dışa aktararak bu dizini geçersiz kılabilirsiniz. Örneğin, çıkışınızı farklı bir sürücüde depolamak istiyorsanız OUT_DIR öğesini bu sürücüye yönlendirebilirsiniz:

export OUT_DIR=my_other_drive

Sırada ne var?