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ıcadroid
etiketi olmayan her şeyi oluşturur. Derleme sunucusu, ağaçta bulunan ve birAndroid.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 tepesinecd
. -
clean
-m clean
bu yapılandırma için tüm çıktı ve ara dosyaları siler. Burm -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:
- JDK gereksinimlerinde belirtilen doğru JDK'nın kurulamaması. Ortamı ayarlama ve Hedef seçme bölümlerindeki adımları uyguladığınızdan emin olun.
- Önceden yüklenmiş başka bir JDK yolunuzda görünüyor. Doğru JDK'yı yolunuzun başına 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. 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.