Android oluşturun

Android'i oluşturmak için bu sayfadaki talimatları izleyin.

Derleme ortamınızı ayarlayın

Derleme ortamınızı kurmak için çalışma dizininizden envsetup.sh betiğini kaynaklayı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 adresine bakın. Yerleşik yardımı görüntülemek için hmm yazın.

Bir hedef seçin

Android'i oluşturmadan önce oluşturulacak hedefi belirlemelisiniz. Oluşturulacak hedefinizi belirlemek için, lunch komutunu ve ardından hedef ürününüzü ve yapınızı tanımlayan bir hedefi kullanın:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Mevcut hedefi görüntüle

Geçerli öğle yemeği ayarlarını görmek için şunu çalıştırın:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Hedefi temsil eden dize aşağıdaki formata sahiptir:

lunch product_name-release-build_variant

Bu dizenin bileşenleri şunlardır:

  • product_name , oluşturmak istediğiniz ürünün adıdır; aosp_cf_x86_64_phone veya aosp_husky gibi. Özel product_name kendi biçiminizi takip edebilir ancak Google'ın kullandığı biçim şu bileşenlere sahiptir:

    • aosp Android Açık Kaynak Platformunu ifade eder.
    • (isteğe bağlı) hedefin Mürekkepbalığı öykünücüsü içinde çalıştırılması amaçlandığında cf eklenir.
    • x86_64_phone veya husky (Pixel 8 pro) gibi mimari ve donanım.
  • release trunk-staging olarak ayarlandı.

  • Dizenin build_variant kısmı aşağıdaki tablodaki üç değerden biri olabilir:

    build_variant Tanım
    user Bu yapı çeşidi sınırlı güvenlik erişimi sağlar ve üretim için uygundur.
    userdebug Bu yapı çeşidi, cihaz geliştiricilerinin geliştirme aşamasındaki sürümlerin performansını ve gücünü anlamalarına yardımcı olur. Bir userdebug yapısıyla geliştirme yaparken, kullanıcı hata ayıklama yönergelerini izleyin.
    ingilizce Bu derleme çeşidi daha hızlı oluşturma süresine sahiptir ve performans ve güce önem vermiyorsanız günlük geliştirme için en uygunudur.

Kodu oluşturun

Hedefinizi oluşturmak için aşağıdaki komutu çalıştırın. İş istasyonunuzun özelliklerine bağlı olarak, ilk kurulum bir saatten az, birkaç saate kadar sürebilir. Sonraki derlemeler önemli ölçüde daha az zaman alır.

$ m

Görmeniz gereken ilk çıktı, hedefinizin ve yapı 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
============================================

m komutu ağacın tepesinden oluşturulur, böylece m alt dizinlerin içinden çalıştırabilirsiniz. TOP ortam değişkenini ayarladıysanız m komutu onu kullanır. TOP ayarlanmamışsa m komutu, ağacın tepesini bulmaya çalışarak geçerli dizinden ağaca bakar.

m komutu -jN argümanıyla paralel görevleri yerine getirebilir. -j argümanı sağlamazsanız derleme sistemi, sisteminiz için en uygun 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 tam cihaz görüntüsü yerine belirli modüller oluşturabilirsiniz. Ayrıca m komutu, gol adı verilen bazı sözde hedefler sağlar. Örneğin, m nothing hiçbir şey inşa etmez, ancak yapı 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, Java sürümünüzle ilgili bir sorunla karşılaştığında m iptal edilebilir. Ö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
************************************************************

İşte olası nedenler ve çözümler: