Android'i oluşturmak için bu sayfadaki talimatları uygulayın.
Derleme ortamınızı ayarlama
Çalışma dizininizden, derleme ortamınızı ayarlamak için envsetup.sh komut dosyasını kaynaklayın:
source build/envsetup.shBu 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 oluşturmadan önce oluşturulacak bir hedef belirlemeniz gerekir. Hedef, geliştirdiğiniz hedef platformu yansıtır. Oluşturulacak hedefi belirlemek için lunch komutunu ve ardından hedefi temsil eden bir dizeyi kullanın. Örneğin:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugHedef ve derleme ortamınızın özetini görürsünüz:
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================
Hedefi temsil eden dize aşağıdaki biçime sahiptir:
lunch product_name-release_config-build_variantBu dizenin bileşenleri şunlardır:
product_name,aosp_cf_x86_64_only_phoneveyaaosp_huskygibi oluşturmak istediğiniz ürünün adıdır. Cihazınız için kendi biçiminizi kullanabilirsiniz ancak Google'ın cihazları için kullandığı biçim şu bileşenlerden oluşur:product_nameaosp, Android Açık Kaynak Projesi'ni ifade eder.- İsteğe bağlı olarak, hedef Cuttlefish emülatöründe çalıştırılmak üzere tasarlandığında
cfdahil edilir. - Mimari ve donanım kod adı (ör.
x86_64_only_phoneveya Pixel 8 Pro'nun kod adı olanhusky) Google cihazlarının kod adlarının listesi için Cihaz kod adları başlıklı makaleyi inceleyin.
release_config,aosp_currentadlı geliştirme sürümü yapılandırması gibi bir sürüm yapılandırmasına ayarlanmıştır. Yayın yapılandırması, özellik yayınlama işaretlerinin arkasında olan ve bir derleme için etkinleştirilen veya devre dışı bırakılan belirli özellikleri ve kodu tanımlar. Yayın yapılandırmaları hakkında daha fazla bilgi için Özellik bayrağı başlatma değerlerini ayarlama başlıklı makaleyi inceleyin.Dizenin
build_variantkısmı, aşağıdaki tablodaki üç değerden biri olabilir:build_variantAçıklama userBu derleme değişkeni, sınırlı güvenlik erişimi sağlar ve üretim için uygundur. userdebugBu derleme değişkeni, cihaz geliştiricilerin geliştirme aşamasındaki sürümlerin performansını ve gücünü anlamasına yardımcı olur. userdebugderlemesiyle geliştirme yaparken userdebug ile ilgili yönergeleri uygulayın.engBu derleme değişkeni daha hızlı derleme süresine sahiptir ve günlük geliştirme ortamları için en uygun olanıdır (performans ve güç daha az önemlidir).
lunch komutunu herhangi bir bağımsız değişken olmadan çalıştırırsanız lunch, yaygın hedeflerin bir listesini sağlar. Özel hedef dizeleri oluşturmak için hedef dizesi öğelerini donanım kod adlarıyla birleştirin. Kod adlarının listesi için Cihaz kod adları başlıklı makaleyi inceleyin.
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 oluşturma
Hedefinizi oluşturmak için aşağıdaki komutu çalıştırın. İş istasyonunuzun özelliklerine bağlı olarak ilk derleme bir saatten kısa veya birkaç saat sürebilir. Sonraki derlemeler çok daha kısa sürer.
mDerlemenizin çıktısı $OUT_DIR içinde görünür. Farklı hedefler oluşturursanız her hedef derlemesi $OUT_DIR içinde görünür.
m komutu, ağacın en üstünden başlayarak derleme yapar. Bu nedenle, m komutunu alt dizinlerden çalıştırabilirsiniz. TOP ortam değişkeni ayarlanmışsa m komutu bu değişkeni kullanır. TOP ayarlanmamışsa m komutu, ağacın en üstünü bulmaya çalışarak ağacı geçerli dizinden yukarı doğru 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 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 tam cihaz görüntüsü yerine belirli modüller oluşturabilirsiniz. Ayrıca, m komutu, hedefler olarak adlandırılan bazı sahte hedefler sağlar. Örneğin, m nothing herhangi 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
Bu bölümde, derleme hatalarını ele alma talimatları yer alır.
Salt okunur dosya sistemi hataları (Android 17 ve sonraki sürümler)
Derleme sırasında AOSP kaynak ağacı salt okunurdur. Çalıştırdığınız derleme, ürün yapılandırması veya derlemenin başka bir bölümü sırasında kaynak ağacını değiştirmeye çalışırsa derleme başarısız olabilir ve salt okunur dosya sistemi hataları bildirebilir. Kaynak ağacı geçici olarak okuma-yazma moduna değiştirmek için bu seçenekleri kullanabilirsiniz:
Derleme sırasında kaynak ağacın tamamını okuma-yazma olarak değiştirmek için derleme ortamına
BUILD_BROKEN_SRC_DIR_IS_WRITABLE=trueekleyin.Ağacın bir bölümünü oluşturma sırasında okuma-yazma olarak değiştirmek için
BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST="path1, path2, ..."simgesini kullanın. Yollar, yazma işlemlerine izin verilmesi gereken dizinlerin yolları olmalı ve çalışma alanının en üstüne göre belirlenmelidir.
Yanlış Java sürümü (Android 8.0 ve önceki sürümler)
Android 8.0 (API düzeyi 26) ve daha eski sürümleri oluşturuyorsanız m, Java sürümünüzle ilgili bir sorunla karşılaştığında işlemi durdurabilir. Ö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 verilmiştir:
- Doğru JDK yüklenmemiş. Daha fazla bilgi için AOSP geliştirme için kurulum (2.3-8.0) başlıklı makaleyi inceleyin.
- Yolunuzda daha önce yüklenmiş başka bir JDK görünüyor. Yolunuzun başına doğru JDK'yı ekleyin veya sorunlu JDK'yı kaldırın.