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

Android kaynağının Android'in en son sürüm dalını (android16-release) indirip oluşturmadan önce donanımınızın gerekli koşulları karşıladığından ve gerekli yazılımın düzgün şekilde yüklendiğinden emin olun. Ayrıca aşağıdaki terimleri de bilmeniz gerekir:

Git
Git, ücretsiz ve açık kaynaklı bir dağıtılmış sürüm kontrol sistemidir. Android, dallandırma, commit, diff ve düzenleme gibi yerel işlemler için Git'i kullanır. Git'i öğrenmeyle ilgili yardım için Git dokümanlarına bakın.
Repo
Repo, birden fazla Git deposunda karmaşık işlemlerin gerçekleştirilmesini basitleştiren, Git etrafındaki bir Python sarmalayıcısıdır. Repo, tüm sürüm kontrolü işlemleri için Git'in yerini almaz. Yalnızca karmaşık Git işlemlerinin gerçekleştirilmesini kolaylaştırır. Repo, Git projelerini Android üst projesinde toplamak için bildirim dosyalarını kullanır.
Manifest dosyası
Manifest dosyası, Android kaynağındaki çeşitli Git projelerinin AOSP kaynak ağacında nereye yerleştirileceğini belirten bir XML dosyasıdır.

Meet Donanım gereksinimleri

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

  • 64 bit x86 sistemi.

  • Kodu kullanıma almak ve oluşturmak için en az 400 GB boş disk alanı (250 GB kullanıma alma + 150 GB oluşturma).

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

İşletim sistemi gereksinimlerini karşılayın

Geliştirme iş istasyonunuzda GNU C Library (glibc) 2.17 veya sonraki bir sürümün yüklü olduğu herhangi bir 64 bit Linux dağıtımı çalıştırılmalıdır.

Gerekli paketleri yükleme

Android 11 veya sonraki sürümleri oluşturmak için Ubuntu 18.04 ya da 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 de yükler.

Gerekli yazılımı yükleme

AOSP ile çalışabilmek için OpenJDK, Make, Python 3 ve Repo'nun yüklü olması gerekir. Android'in en son sürüm dalında OpenJDK, Make ve Python 3'ün önceden derlenmiş sürümleri bulunur. Bu nedenle ek kurulum adımları gerekmez. Repo'nun nasıl yükleneceği sonraki bölümde açıklanmaktadır.

Repo'yu yükleme

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

  1. Mevcut paket bilgilerini indirin:

    sudo apt-get update
  2. Repo 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ı, bir ödeme işlemini başlatan ve Repo aracının tamamını indiren bir Python komut dosyası sağlar.

    Başarılı olursa 4. adıma geçin.

  3. (isteğe bağlı) Aşağıdaki komut dizisini 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 geçici bir 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 Repo başlatıcıyı yükler.

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

    repo version

    Çıkışta 2.4 veya daha yeni bir sürüm belirtilmelidir. Örneğin:

    repo launcher version 2.45

Alternatif bir çıkış dizini ayarlama

Varsayılan olarak, her derlemenin çıkışı eşleşen kaynak ağacının out/ alt dizininde saklanı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?