Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Android Oluşturma

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

Kurulum ortamı

envsetup.sh betiği ile ortamı envsetup.sh :

source build/envsetup.sh

veya

. build/envsetup.sh

Cihaz hedeflerini seçmek için lunch ve referans TV uygulaması gibi ayrıştırılmamış uygulamalar oluşturmak için tapas dahil olmak üzere ilgili komutların açıklamaları için platform / build / envsetup.sh adresindeki komut dosyasına bakın.

Komut dosyasındaki değişiklikleri almak için her repo sync sonra bu komutu yeniden vermeniz gerekir. source ile değiştirildiğini unutmayın . (tek bir nokta) birkaç karakter kaydeder ve kısa form 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 birkaç komut alır. İşte bazı önemli komut örnekleri:

  • lunch - lunch product_name - build_variant , oluşturulacak ürün olarak product_name ve build_variant varyant olarak lunch product_name - build_variant seçer ve daha sonra m ve diğer benzer komutlar tarafından okunacak ortamdaki bu seçimleri depolar.
  • m - Ağacın üstünden yapı oluşturur. Alt dizinlerden make komutunu çalıştırabildiğiniz make bu yararlıdır. TOP ortam değişkenini ayarladıysanız, bunu kullanır. Bunu yapmazsanız, ağacın üst dizinini bulmaya çalışarak geçerli dizinden ağacı arar. Tüm kaynak kodu ağacını bağımsız değişkenler olmadan m çalıştırarak 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 - Verilen dizinlerdeki tüm modülleri ve bağımlılıklarını oluşturur.
  • croot - ağacın tepesine cd .

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

hmm

Bir hedef seçin

lunch hangi hedefi inşa edeceğinizi seçin. Tam yapılandırma bir bağımsız değişken olarak geçirilebilir. Örneğin, aşağıdaki komut, tüm hata ayıklama etkinken öykünücü için tam bir derleme anlamına gelir:

lunch aosp_arm-eng

Bağımsız değişken olmadan çalıştırılırsa, lunch menüden bir hedef seçmenizi ister. Varolan tüm cihazların derleme yapılandırmaları için bkz. Bir cihaz derlemesi seçme .

Tüm oluşturma hedefleri BUILD-BUILDTYPE biçimini BUILD-BUILDTYPE ; burada BUILD , belirli özellik kombinasyonuna gönderme yapan bir kod adıdır. BUILDTYPE aşağıdakilerden biridir.

Buildtype kullanım
kullanıcı Sınırlı erişim; üretime uygun
userdebug Kullanıcı gibi ama kök erişimi ve hata ayıklama özelliği ile; hata ayıklama için tercih edilir
eng Ek hata ayıklama araçlarıyla geliştirme yapılandırması

Userdebug derlemesi, normalde platformun güvenlik modelini ihlal eden ek hata ayıklamayı etkinleştirme özelliğiyle, kullanıcı derlemesiyle aynı şekilde davranmalıdır. Bu, userdebug'un daha büyük tanılama yeteneklerine sahip kullanıcı testleri için iyi olmasını sağlar. Userdebug derlemesi ile geliştirirken, userdebug yönergelerini izleyin .

Eng build, platformda çalışan mühendisler için mühendislik verimliliğine öncelik verir. Eng build, iyi bir kullanıcı deneyimi sağlamak için kullanılan çeşitli optimizasyonları kapatır. Aksi takdirde, eng derlemesi kullanıcı ve userdebug derlemelerine benzer bir davranışa sahiptir, böylece cihaz geliştiricileri kodun bu ortamlarda nasıl davrandığını görebilir.

Gerçek donanım için yapı oluşturma ve bu donanım üzerinde çalışma hakkında daha fazla bilgi için bkz. Yapıları Çalıştırma .

Kodu oluşturma

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

m ile her şeyi inşa et. m , -jN argümanıyla paralel görevleri gerçekleştirebilir. Bir -j argümanı sağlamazsanız, derleme sistemi otomatik olarak sisteminiz için en uygun olduğunu düşündüğü paralel bir görev sayısı seçer.

m

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

  • droid - m droid normal yapıdır. Varsayılan hedef bir ad gerektirdiğinden bu hedef burada.
  • all - m all , m droid yaptığı her şeyi ve droid etiketine sahip olmayan her şeyi oluşturur. Yapı sunucusu, ağaçta bulunan ve bir Android.mk dosyası olan her şeyin oluşturulduğundan emin olmak için bunu çalıştırır.
  • clean - m clean , bu yapılandırma için tüm çıkış ve ara dosyaları siler. Bu rm -rf out/ aynıdır.

Diğer pseudotargets m ne görmek için m help çalıştırın.

Koş!

Yapınızı bir emülatörde çalıştırabilir veya bir cihazda flaş edebilirsiniz. İnşaat hedefinizi zaten lunch ile seçtiğiniz için, oluşturulduğundan farklı bir hedefte koşma olasılığı düşüktür.

Fastboot ile yanıp sönüyor

Bir cihazı fastboot , başarılı bir fastboot sonra yolunuza dahil edilmesi gereken fastboot kullanın. Bkz bir cihaz sönen talimatlar için.

Android cihazı taklit etme

Emülatör oluşturma işlemiyle yolunuza otomatik olarak eklenir. Öykünücüyü çalıştırmak için şunu yazın:

emulator

Genel derleme hatalarını giderme

Yanlış Java sürümü

Eğer Java, sürümü ile tutarsız bir Android sürümünü kurmak çalışıyorsanız make gibi bir mesaj ile iptal:

************************************************************
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 şunlardır:

  • JDK Gereksinimleri'nde belirtildiği şekilde doğru JDK yüklenemedi. Ortamı ayarlama ve Hedef seçme bölümündeki adımları uyguladığınızdan emin olun.
  • Başka bir JDK daha önce yolunuzda görünecek şekilde yüklenmiş. Doğru JDK'yı yolunuzun başına ekleyin veya sorunlu JDK'yı kaldırın.

Python sürüm 3

Repo, Python 2.x'in belirli işlevleri üzerine kurulmuştur ve Python 3 ile uyumlu değildir. Repo'yu kullanmak için Python 2.x'i yükleyin:

apt-get install python

Büyük / küçük harfe duyarlı olmayan dosya sistemi

MacOS üzerinde bir HFS dosya sistemi kuruyorsanız, aşağıdaki gibi bir hatayla karşılaşabilirsiniz:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Büyük / küçük harfe duyarlı bir disk görüntüsü oluşturma bölümündeki talimatları izleyin.

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] (adb.md) zaten çalışıyorsa ve bu kurallar ayarlandıktan sonra cihaza bağlanamıyorsa, adb kill-server ile adb kill-server . Bu komut adb'nin yeni yapılandırma ile yeniden başlatılmasına neden olur.