Android'i geliştirin

Android'i geliştirmek için bu sayfadaki talimatları uygulayın.

Derleme ortamınızı ayarlama

Derleme ortamınızı kurmak için çalışma dizininizde envsetup.sh komut dosyasını kaynak olarak kullanın:

source build/envsetup.sh

Bu komut dosyası, bu sayfada kullanılan komutlar da dahil olmak üzere Android kaynak koduyla çalışmanıza olanak tanıyan çeşitli komutları içe aktarır. Komut dosyasının kaynağını görüntülemek için platform/build/envsetup.sh bölümüne bakın. Yerleşik yardımı görüntülemek için hmm yazın.

Hedef seçin

Android'i geliştirmeden önce, oluşturulacak bir hedef belirlemelisiniz. Hedef, hangi platform için geliştirme yaptığınızı yansıtır. Derleme hedefinizi tanımlamak için lunch komutunu ve ardından, hedefi temsil eden bir dizeyi kullanın. Örnek:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Geçerli hedefi görüntüleme

Öğle yemeğiyle ilgili mevcut ayarları görmek için şu komutu çalıştırın:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Hedefi temsil eden dize aşağıdaki biçimdedir:

lunch product_name-release-build_variant

Bu dizenin bileşenleri şunlardır:

  • product_name, oluşturmak istediğiniz ürünün adıdır (ör. aosp_cf_x86_64_phone veya aosp_husky). Size özel product_name cihazınızda kendi biçiminizi kullanabilir ancak Google'ın cihazları için kullandığı biçim şu bileşenlere sahiptir:

    • aosp, Android Açık Kaynak Platformu'nu ifade eder.
    • (isteğe bağlı) Hedefin Cuttlefish emülatöründe çalıştırılması amaçlandığında cf eklenir.
    • Mimari ve donanım (kod adı) (ör. Pixel 8 pro'nun kod adı olan x86_64_phone veya husky). Google cihazlarının kod adlarının listesi için Cihaz kod adları bölümüne bakın.
  • release, trunk_staging olarak ayarlandı.

  • Dizenin build_variant bölümü, aşağıdaki tabloda yer alan üç değerden biri olabilir:

    build_variant Açıklama
    user Bu derleme varyantı, sınırlı güvenlik erişimi sağlar ve üretime uygundur.
    userdebug Bu derleme varyantı, cihaz geliştiricilerinin geliştirme aşamasındaki sürümlerin performansını ve gücünü anlamalarına yardımcı olur. userdebug derlemesi ile geliştirme yaparken Kullanıcı hata ayıklama yönergeleri'ne uyun.
    eng Bu derleme varyantı daha hızlı derleme süresine sahiptir ve performans ile güçle ilgilenmiyorsanız günlük gelişim için en uygun seçenektir.

lunch öğesini herhangi bir bağımsız değişken olmadan çalıştırırsanız ortak hedeflerin listesi sağlanır. Ayrıca, bu sayfadaki bilgileri ve Cihaz kod adları bölümünde belirli Google donanımını temsil eden kod adlarını kullanıp hedef dize öğelerini birleştirerek kendi hedef dizelerinizi oluşturabilirsiniz.

Kodu oluşturma

Hedefinizi oluşturmak için aşağıdaki komutu çalıştırın. İş istasyonunuzun teknik özelliklerine bağlı olarak, ilk derleme bir saatten daha kısa ve birkaç saat kadar sürebilir. Sonraki derlemeler çok daha kısa sürer.

$ m

Görmeniz gereken ilk çıkış, hedef ve derleme ortamınızın bir özetidir:

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================

Derlemenizin çıktısı $OUT_DIR üzerinde görünür. Farklı hedefler oluşturursanız her hedef derleme $OUT_DIR içinde görünür.

m komutu ağacın en üstünden derlenir. Böylece m komutunu alt dizinlerden çalıştırabilirsiniz. TOP ortam değişkeni ayarladıysanız m komutu bunu kullanır. TOP ayarlanmazsa m komutu, ağacın üst kısmını bulmaya çalışarak geçerli dizinden ağacı arar.

m komutu, -jN bağımsız değişkeniyle paralel görevleri işleyebilir. -j bağımsız değişkeni sağlamazsanız derleme sistemi, sisteminiz için en uygun olduğunu düşündüğü bir paralel görev sayısını otomatik olarak seçer.

Modül adlarını m komut satırında listeleyerek tam cihaz görüntüsü yerine belirli modüller oluşturabilirsiniz. Ayrıca, m komutu hedef adı verilen bazı sözde hedefler sağlar. Örneğin, m nothing hiçbir şey derlemez ancak derleme yapısını ayrıştırır ve doğrular. Geçerli hedeflerin listesi için m help yazın.

Derleme hatalarını giderme (8.0 veya önceki sürümler)

AOSP 8 veya daha eski bir sürüm oluşturuyorsanız m, Java sürümünüzle ilgili bir sorunla karşılaştığında işlemi iptal edebilir. Örneğin, şu mesajı görebilirsiniz:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

Olası nedenler ve çözümleri şunlardır:

  • AOSP geliştirme için ayarlama (2.3 - 8.0) bölümünün JDK bölümlerinde belirtilen şekilde doğru JDK'yi yüklememişsinizdir.
  • Yolunuzda görünen, önceden yüklenmiş başka bir JDK vardır. Doğru JDK'yı yolunuzun başına ekleyin veya sorunlu JDK'yı kaldırın.