Android Oluşturma

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

ortamın ayarlanması

ortamı envsetup.sh komut dosyasıyla 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ındaki değişiklikleri almak için her repo sync sonra bu komutu yeniden yayınlamanız gerekir. source ile değiştirildiğine dikkat edin . (tek bir nokta) birkaç karakteri kaydeder ve kısa biçim, belgelerde 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

hedef seçmek

öğle yemeği

lunch ile 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 çalıştırmaları tarafından okunacak şekilde ortamda depolar.

Kesin yapılandırma bir bağımsız değişken olarak iletilebilir. Örneğin, aşağıdaki komut, öykünücü için tüm hata ayıklamanın etkinleştirildiği eksiksiz bir yapıyı ifade eder:

lunch aosp_arm-eng

Bağımsız değişken olmadan çalıştırılırsa, lunch 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 ekibinizdeki kişilerle üzerinde çalıştığınız cihaz için doğru öğle yemeği hakkında konuşun.

Tüm derleme hedefleri BUILD-BUILDTYPE biçimini 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; üretim için uygun
kullanıcı hata ayıklaması Kullanıcı gibi, ancak kök erişimi ve hata ayıklama özelliği ile; üretim performansına çok yakın
ingilizce Daha hızlı oluşturma süresi ile geliştirme yapılandırması; günlük gelişim için en uygun

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

eng yapısı, platformda çalışan mühendisler için mühendislik üretkenliğine öncelik verir. eng derlemesi, çalışma zamanı performansını en üst düzeye çıkarmak için kullanılan çeşitli optimizasyonları kapatır. Aksi takdirde, eng derlemesi user ve userdebug derlemelerine ç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 için derleme ve çalıştırma hakkında daha fazla bilgi için bkz. Yanıp Sönen Aygıtlar .

tapas

tapas komutu, paketlenmemiş uygulamaların yapısını yapılandırır. Android derleme sistemi tarafından oluşturulacak uygulamaları tek tek seçer. lunch farklı olarak tapas , bir cihaz için görüntülerin 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 bağımsız değişkeni ile paralel görevleri gerçekleştirebilir. Bir -j bağımsız değişkeni 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 aygıt görüntüsü yerine belirli modüller oluşturabilirsiniz. Ek olarak m , özel amaçlar için bazı sahte hedefler sağlar. Bazı örnekler:

  • droid - m droid normal yapıdır. Bu hedef burada çünkü varsayılan hedef bir ad gerektiriyor.
  • all - m all , m droid yaptığı her şeyi ve ayrıca droid etiketi olmayan her şeyi oluşturur. Derleme sunucusu, ağaçta bulunan ve bir Android.mk dosyasına sahip olan her şeyin derlendiğinden 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 dizinlerden çalıştırabilirsiniz. TOP ortam değişkenini ayarladıysanız, bunu kullanır. Bunu yapmazsanız, geçerli dizinden ağacı arar ve ağacın tepesini bulmaya çalışır. m bağımsız değişkenler olmadan çalıştırarak tüm kaynak kodu ağacını oluşturabilir veya adlarını belirterek belirli hedefler oluşturabilirsiniz.
  • mma - Geçerli dizindeki tüm modülleri ve bağımlılıklarını oluşturur.
  • mmma - Sağlanan dizinlerdeki tüm modülleri ve bağımlılıklarını oluşturur.
  • croot - ağacın tepesine cd .
  • clean - m clean bu yapılandırma için tüm çıktı ve ara dosyaları siler. Bu rm -rf out/ ile aynıdır.

m 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 flash edebilirsiniz. lunch ile oluşturma hedefinizi zaten seçtiğiniz için, oluşturulduğundan farklı bir hedef üzerinde çalışması pek olası değildir.

Fastboot ile yanıp sönme

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

Bir Android cihazını taklit etme

Öykünücü, oluşturma işlemi tarafından yolunuza otomatik olarak eklenir. Öykünücüyü çalıştırmak için şunu yazın:

emulator

Yapı parmak izlerini anlama

Belirli bir Android yapısına bağlı sorunları izlemek ve raporlamak için yapı parmak izini anlamak önemlidir. Yapı parmak izi, her yapı için verilen üretici bilgilerini içeren, insanlar tarafından okunabilen benzersiz bir dizidir. Kesin sözdizimi için Android Uyumluluk Tanımlama 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ştiricilerin ve diğer kişilerin belirli üretici yazılımı sürümleriyle ilgili sorunları bildirmesine olanak tanır. Android sorun raporlama süreci için Hataları bildirme konusuna bakın.

Yapı parmak izi, tüm Android uygulama ayrıntılarını içerir:

  • API'ler: Android ve yerel, 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ımlar-özellik ayarı
  • Donanım ve yazılım bileşenlerinin uygulanması

Tüm ayrıntılar için CDD'ye ve tamamen yeni bir Android cihazı oluşturmaya ilişkin talimatlar için Yeni Bir 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 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:

USB izni yok

Çoğu Linux sisteminde varsayılan olarak ayrıcalıksız kullanıcılar USB bağlantı noktalarına erişemez. Bir izin 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 öldürebilirsiniz. Bu komut, ADB'nin yeni yapılandırmayla yeniden başlamasına neden olur.