Android Oluşturma

Android oluşturmaya başlamak için bu talimatları izleyin.

Çevreyi ayarlama

envsetup.sh betiğiyle ortamı başlatın:

source build/envsetup.sh

veya

. build/envsetup.sh

İlgili komutların açıklamaları için platform/build/envsetup.sh adresindeki komut dosyasına bakın; buna cihaz hedeflerini seçmek için öğle yemeği ve referans TV uygulaması gibi paketlenmemiş uygulamalar oluşturmak için tapas dahildir.

Bu komut dosyasında yapılan değişiklikleri almak için her repo sync sonra bu komutu yeniden yayınlamanız gerekir. source . (tek nokta) birkaç karakteri kaydeder ve kısa biçim dokümantasyonda daha yaygın olarak kullanılır.

envsetup.sh betiği, bu alıştırmada kullanılan komutlar da dahil olmak üzere, Android kaynak koduyla çalışmanıza olanak tanıyan çeşitli komutları içe aktarır.

Kullanılabilir komutların tam listesini görmek için şunu çalıştırın:

hmm

Bir hedef seçmek

öğle yemeği

lunch birlikte hangi hedefi oluşturacağınızı seçin. lunch product_name - build_variant oluşturulacak ürün olarak product_name ve oluşturulacak değişken olarak build_variant seçer ve bu seçimleri, m ve diğer benzer komutların sonraki çağrıları tarafından okunmak üzere ortamda saklar.

Tam konfigürasyon argüman olarak iletilebilir. Örneğin, aşağıdaki komut, tüm hata ayıklamanın etkin olduğu öykünücünün tam yapısına atıfta bulunur:

lunch aosp_arm-eng

lunch herhangi bir argüman olmadan çalıştırılırsa menüden bir hedef seçmenizi ister ancak menünün her olasılığı içermediğini unutmayın. AOSP'de desteklenen tüm cihazların yapı yapılandırmaları için Cihaz yapısı seçme konusuna bakın veya üzerinde çalıştığınız cihaz için doğru öğle yemeği hakkında ekibinizdeki kişilerle konuşun.

Tüm yapı hedefleri BUILD-BUILDTYPE formunu alır; burada BUILD belirli özellik kombinasyonuna atıfta bulunan bir kod adıdır. BUILDTYPE aşağıdakilerden biridir.

Yapı türü Kullanmak
kullanıcı Sınırlı erişim; üretime uygun
kullanıcı hata ayıklaması Kullanıcıya benzer ancak root erişimi ve hata ayıklama özelliği vardır; üretim performansına çok yakın
ingilizce Daha hızlı derleme süresine sahip geliştirme yapılandırması; günlük gelişime en uygun

userdebug yapısı, normalde platformun güvenlik modelini ihlal eden ek hata ayıklamayı etkinleştirme yeteneğiyle birlikte user yapısıyla aynı şekilde davranmalıdır. Bu, userdebug ayıklama derlemesinin, sürüm tarafından kullanılan performansı ve gücü anlamak için iyi olmasını sağlar. userdebug yapısıyla geliştirme yaparken, kullanıcı hata ayıklama yönergelerini izleyin.

eng yapısı, platformda çalışan mühendisler için mühendislik üretkenliğine öncelik verir. eng yapısı, çalışma zamanı performansını en üst düzeye çıkarmak için kullanılan çeşitli optimizasyonları kapatır. Aksi takdirde, eng yapısı user ve kullanıcı userdebug yapılarına çok benzer, böylece cihaz geliştiricileri kodun bu ortamlarda nasıl davrandığını görebilir.

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

echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Gerçek donanım oluşturma ve bu donanım üzerinde çalıştırma hakkında daha fazla bilgi için bkz. Yanıp Sönen Aygıtlar .

tapas

tapas komutu, paketlenmemiş uygulamaların oluşturulmasını yapılandırır. Android derleme sistemi tarafından oluşturulacak bireysel uygulamaları seçer. lunch aksine tapas , bir cihaz için görsel oluşturulmasını talep etmez.

Komut hakkında daha fazla bilgi için tapas help çalıştırın.

Kodu oluşturma

Bu bölüm, kurulumun tamamlandığından emin olmak için hızlı bir özettir.

Her şeyi m ile oluşturun. m -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

Yukarıda açıklandığı gibi, m komut satırınızda adlarını listeleyerek tam cihaz görüntüsü yerine belirli modüller oluşturabilirsiniz. Ayrıca m , özel amaçlar için bazı sözde hedefler sağlar. Bazı örnekler:

  • droid - m droid normal yapıdır. Bu hedef, varsayılan hedefin bir ad gerektirmesi nedeniyle buradadır.
  • all - m all m droid yaptığı her şeyi ve ayrıca droid etiketine sahip olmayan her şeyi oluşturur. Yapı sunucusu, ağaçtaki ve Android.mk dosyasına sahip her şeyin oluşturulduğundan emin olmak için bunu çalıştırır.
  • m - Yapıları ağacın tepesinden çalıştırır. Bu kullanışlıdır çünkü make alt dizinlerin içinden çalıştırabilirsiniz. TOP ortam değişkenini ayarladıysanız, bunu kullanır. Bunu yapmazsanız, geçerli dizinden ağaca bakar ve ağacın tepesini bulmaya çalışır. m argüman olmadan çalıştırarak kaynak kod ağacının tamamını oluşturabilir veya adlarını belirterek belirli hedefler oluşturabilirsiniz.
  • mma - Geçerli dizindeki tüm modülleri ve bunların bağımlılıklarını oluşturur.
  • mmma - Sağlanan dizinlerdeki tüm modülleri ve bunların bağımlılıklarını oluşturur.
  • croot - ağacın tepesine cd .
  • clean - m clean bu konfigürasyona ait tüm çıktı ve ara dosyaları siler. Bu rm -rf out/ ile aynıdır.

m diğer sözde hedeflerin neler sağladığını görmek için m help komutunu çalıştırın.

Yapıyı çalıştırma

Derlemenizi bir emülatörde çalıştırabilir veya bir cihazda flaşlayabilirsiniz. lunch birlikte derleme hedefinizi zaten seçtiğiniz için, oluşturulduğu hedeften farklı bir hedef üzerinde koşması pek olası değildir.

Fastboot ile yanıp sönüyor

Bir cihazı flaşlamak için, başarılı bir kurulumdan sonra yolunuza dahil edilmesi gereken fastboot kullanın. Talimatlar için bkz. Bir cihazın yanıp sönmesi .

Bir Android cihazı taklit etme

Emülatör, oluşturma işlemi tarafından otomatik olarak yolunuza eklenir. Emülatörü çalıştırmak için şunu yazın:

emulator

Yapı parmak izlerini anlama

Belirli bir Android sürümüne bağlı sorunları izlemek ve raporlamak için yapı parmak izini anlamak önemlidir. Yapı parmak izi, her yapıya verilen üretici bilgilerini içeren benzersiz, insan tarafından okunabilen bir dizedir. Kesin sözdizimi için Android Uyumluluk Tanımı Belgesinin (CDD) Yapı Parametreleri bölümündeki PARMAK İZİ açıklamasına bakın.

Derleme parmak izi belirli bir Android uygulamasını ve revizyonunu temsil eder. Bu benzersiz anahtar, uygulama geliştiricilerinin ve diğerlerinin belirli ürün yazılımı sürümleriyle ilgili sorunları bildirmelerine olanak tanır. Android sorun raporlama süreci için Hataları raporlama bölümüne bakın.

Yapı parmak izi tüm Android uygulama ayrıntılarını kapsar:

  • API'ler: Android ve yerel uygulamaların yanı sıra yumuşak API davranışları
  • Çekirdek API ve bazı sistem kullanıcı arayüzü davranışları
  • CDD'de tanımlanan uyumluluk ve güvenlik gereksinimleri
  • Beklenen gereksinimleri karşılayan cihazları hedeflemek için uygulamalar tarafından kullanılan ürün özellikleri ve kullanım özellikleri ayarı
  • Donanım ve yazılım bileşenlerinin uygulanması

Tüm ayrıntılar için CDD'ye bakın ve tamamen yeni bir Android cihazı oluşturmaya ilişkin talimatlar için Yeni Cihaz Ekleme'ye bakın.

Yaygın derleme hatalarını giderme

Yanlış Java sürümü

Java sürümünüzle tutarsız bir Android sürümü oluşturmaya çalışıyorsanız aşağıdaki gibi bir mesajla iptal işlemini make :

************************************************************
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:

  • JDK gereksinimlerinde belirtildiği gibi doğru JDK'nın kurulamaması. Ortamı ayarlama ve Hedef seçme bölümündeki adımları izlediğinizden emin olun.
  • Daha önce yüklenmiş başka bir JDK yolunuzda görünüyor. Yolunuzun başına doğru JDK'yı ekleyin veya sorunlu JDK'yı kaldırın.

USB izni yok

Çoğu Linux sisteminde varsayılan olarak ayrıcalıksız kullanıcılar USB bağlantı noktalarına erişemez. İzin reddedildi hatası görürseniz USB erişimini yapılandırma bölümündeki talimatları izleyin.

ADB zaten çalışıyorsa ve bu kuralları ayarladıktan sonra cihaza bağlanamıyorsa, onu adb kill-server ile sonlandırabilirsiniz. Bu komut ADB'nin yeni konfigürasyonla yeniden başlatılmasına neden olur.