Android Oluşturma

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

Çevreyi kurmak

envsetup.sh ortamı başlatın:

source build/envsetup.sh

veya

. build/envsetup.sh

Cihaz hedeflerini seçmek için öğle yemeği ve referans TV uygulaması gibi gruplanmamış uygulamalar oluşturmak için tapas da dahil olmak üzere ilgili komutların açıklamaları için platform/build/envsetup.sh adresindeki komut dosyasına bakın.

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ğini unutmayın . (tek nokta) birkaç karakter kaydeder ve kısa biçim daha çok dokümantasyonda kullanılır.

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

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

hmm

Bir hedef seçme

öğle yemeği

lunch ile hangi hedefi oluşturacağınızı seçin. öğle yemeği product_name lunch product_name - build_variant , oluşturulacak ürün olarak build_variant ve oluşturulacak varyant 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 yapılandırma bir argüman olarak iletilebilir. Örneğin, aşağıdaki komut, tüm hata ayıklama etkinleştirilmiş olarak öykünücü için eksiksiz bir derlemeye başvurur:

lunch aosp_arm-eng

Herhangi bir argüman 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 bir cihaz derlemesi seçme bölümüne 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 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ıklama Kullanıcı gibi, ancak kök erişimi ve hata ayıklama özelliği var; hata ayıklama için tercih edilen
ingilizce Ek hata ayıklama araçlarıyla geliştirme yapılandırması

Kullanıcı hata ayıklama derlemesi, normalde platformun güvenlik modelini ihlal eden ek hata ayıklamayı etkinleştirme yeteneğiyle, kullanıcı derlemesiyle aynı şekilde davranmalıdır. Bu, kullanıcı hata ayıklamasının daha iyi tanılama yetenekleriyle kullanıcı testi için iyi olmasını sağlar. userdebug derlemesiyle geliştirme yaparken, userdebug yönergelerini izleyin .

Eng build, platformda çalışan mühendisler için mühendislik üretkenliğine öncelik verir. Motor yapısı, iyi bir kullanıcı deneyimi sağlamak için kullanılan çeşitli optimizasyonları kapatır. Aksi takdirde, eng yapısının kullanıcıya ve kullanıcı hata ayıklama yapılarına benzer bir davranışı vardır, böylece cihaz geliştiricileri kodun bu ortamlarda nasıl davrandığını görebilir.

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

tapas

tapas komutu, ayrıştırılmış 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 argümanıyla paralel görevleri işleyebilir. Bir -j argümanı sağlamazsanız, yapı sistemi, sisteminiz için en uygun olduğunu düşündüğü paralel bir 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 hedef bir ad gerektirdiği için burada.
  • all - m all , m droid yaptığı her şeyi ve ayrıca droid etiketine sahip olmayan her şeyi oluşturur. Derleme sunucusu, ağaçtaki ve bir Android.mk dosyasına sahip olan her şeyin oluşturulduğundan emin olmak için bunu çalıştırır.
  • m - Binaları 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, mevcut dizinden ağacı arar ve ağacın tepesini bulmaya çalışır. Argümansız m çalıştırarak tüm kaynak kod ağacı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 yapılandırma için tüm çıktı ve ara dosyaları siler. Bu, rm -rf out/ ile aynıdır.

Diğer m m help çalıştırın.

Derlemeyi çalıştırma

Derlemenizi bir emülatörde çalıştırabilir veya bir cihazda flaş edebilirsiniz. lunch birlikte oluşturma hedefinizi zaten seçtiğiniz için, oluşturulduğundan farklı bir hedefte koşmanız pek olası değildir.

Fastboot ile yanıp sönme

Bir cihazı flaş etmek için, başarılı bir derlemeden sonra yolunuza dahil edilmesi gereken fastboot kullanın. Talimatlar için Bir cihazı yanıp sönme konusuna bakın.

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 derlemesine bağlı sorunları izlemek ve bildirmek için derleme parmak izini anlamak önemlidir. Yapı parmak izi, her yapıya verilen üretici bilgilerini içeren benzersiz, insan tarafından okunabilir 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.

Yapı 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 bildirme süreci için Hata Bildirme bölümüne bakın.

Bir yapı parmak izi, tüm Android uygulama ayrıntılarını kapsar:

  • API'ler: Android ve yerel ve ayrıca yumuşak API davranışları
  • Çekirdek API ve bazı sistem kullanıcı arabirimi davranışı
  • CDD'de tanımlanan uyumluluk ve güvenlik gereksinimleri
  • Beklenen gereksinimleri karşılayan cihazları hedeflemek için uygulamalar tarafından kullanılan ürün spesifikasyonları ve kullanımlar-özellik ayarı
  • Donanım ve yazılım bileşenlerinin uygulamaları

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ında sorun 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şlemi 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 Bir hedef seçme bölümündeki adımları uyguladığınızdan emin olun.
  • Yolunuzda görünen, önceden yüklenmiş başka bir JDK. 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ığı olmayan 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 öldürebilirsiniz. Bu komut, ADB'nin yeni yapılandırmayla yeniden başlatılmasına neden olur.