Android'i geliştirin

Android'i derlemek için bu sayfadaki talimatları uygulayın.

Derleme ortamınızı ayarlama

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

source build/envsetup.sh

Bu komut dosyası, bu sayfada kullanılanlar 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 derlemeden önce derleyeceğiniz bir hedef belirlemeniz gerekir. Hedef, uygulamanızı geliştirdiğiniz hedef platformu yansıtır. Oluşturacağınız hedefi tanımlamak için lunch komutunu ve ardından hedefi temsil eden bir dize kullanın. Örnek:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Hedefinizin ve derleme ortamınızın özetini görürsünüz:

============================================
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
============================================

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

lunch product_name-release_config-build_variant

Bu dizenin bileşenleri şunlardır:

  • product_name, derlemek istediğiniz ürünün adıdır (ör. aosp_cf_x86_64_phone veya aosp_husky). product_name, cihazınız için kendi biçiminizi kullanabilir ancak Google'ın cihazları için kullandığı biçim aşağıdaki bileşenleri içerir:

    • aosp, Android Open Source Platform'u ifade eder.
    • (isteğe bağlı) Hedefin Cuttlefish emülatöründe çalıştırılması amaçlandığında cf eklenir.
    • Pixel 8 Pro'nun kod adı olan x86_64_phone veya husky gibi mimari ve donanım (kod adı). Google cihazlarının kod adlarının listesi için Cihaz kod adları başlıklı makaleye göz atın.
  • release_config, trunk_staging adlı geliştirme sürümü yapılandırması gibi bir sürüm yapılandırması olarak ayarlanır. Sürüm yapılandırması, özellik lansmanı işaretlerinin arkasındaki belirli özellikleri ve kodları tanımlar ve bir derleme için etkinleştirilir veya devre dışı bırakılır. Sürüm yapılandırmaları hakkında daha fazla bilgi için Özellik işareti lansman değerlerini ayarlama başlıklı makaleyi inceleyin.

  • Dizinin build_variant kısmı, aşağıdaki tablodaki üç 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ştiricilerin geliştirme aşamasındaki sürümlerin performansını ve gücünü anlamalarına yardımcı olur. userdebug derlemesi ile geliştirirken userdebug yönergelerini uygulayın.
    eng Bu derleme varyantının derleme süresi daha kısadır ve performans ve güç sizin için önemli değilse günlük geliştirme için en uygun seçenektir.

lunch komutunu herhangi bir bağımsız değişken olmadan çalıştırırsanız yaygın hedeflerin listesi sağlanır. Ayrıca, bu sayfadaki bilgileri ve Cihaz kod adları bölümündeki belirli Google donanımlarını temsil eden kod adlarını kullanarak hedef dizenin öğelerini bir araya getirerek kendi hedef dizelerinizi de oluşturabilirsiniz.

Mevcut hedefi görüntüleme

Mevcut öğle yemeği ayarlarını görmek için şu komutu çalıştırın:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Kodu derleyin

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

m

Derleme işleminizin çıkışı $OUT_DIR'te görünür. Farklı hedefler oluşturursanız her hedef derlemesi $OUT_DIR bölümünde görünür.

m komutu ağacın en üstünden oluşturulur. Bu nedenle, m komutunu alt dizinlerden çalıştırabilirsiniz. TOP ortam değişkeni ayarlandıysa m komutu bu değişkeni kullanır. TOP ayarlanmamışsa m komutu, ağacın üst kısmını bulmaya çalışırken geçerli dizinden ağaca bakar.

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

m komut satırınızda modül adlarını listeleyerek cihaz resminin tamamı yerine belirli modüller oluşturabilirsiniz. Ayrıca m komutu, hedefler olarak adlandırılan bazı sözde hedefler sağlar. Örneğin, m nothing hiçbir şey oluşturmaz 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 önceki bir sürümü derliyorsanız m, Java sürümünüzle ilgili bir sorunla karşılaştığında derlemeyi iptal edebilir. Örneğin, şu mesajı alabilirsiniz:

************************************************************
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ümler aşağıda açıklanmıştır:

  • AOSP geliştirme için kurulum (2.3 - 8.0) başlıklı makalenin JDK bölümlerinde belirtilen doğru JDK'yi yüklemediniz.
  • Yolunuzda daha önce yüklenmiş başka bir JDK var. Doğru JDK'yi yolunuzun başına ekleyin veya sorunlu JDK'yi kaldırın.