Android Derlemesi Performansı

Sorun bildirin Kaynağı göster

Bu sayfada, özellikle Android uygulamaları için derleme performansını optimize etme hakkında bilgiler yer almaktadır. Bazel ile genel derleme performansı optimizasyonu için Performansı Optimize Etme bölümüne bakın.

İşaretler, bazelrc yapılandırma söz diziminde olduğundan, doğrudan bazelrc dosyasına yapıştırılabilir ve komut satırında --config=<configuration_name> ile çağrılabilir.

Profil performansı

Bazel, varsayılan olarak JSON izleme profili yazarak Bazel'ın çıkış tabanında command.profile.gz adlı bir dosyaya yazar. Profili okuma ve profille etkileşim kurma hakkında bilgi edinmek için JSON Profili dokümanlarına göz atın.

Android derleme işlemleri için kalıcı çalışanlar.

Android derleme işlemlerinin bir alt kümesi kalıcı çalışanları destekler.

Bu işlemlerdeki hatıralar:

  • DexBuilder Oluşturucu
  • Java Dili
  • Desugar
  • AaptPackage
  • AndroidKaynakParser
  • AndroidKaynak Doğrulayıcı
  • AndroidKaynakCompiler
  • RSınıfı Oluşturma Aracı
  • AndroidKaynak Bağlantısı
  • AndroidAapt2
  • AndroidÖğe Birleştirme
  • AndroidKaynak Birleştirme
  • AndroidBirleştirilmişKaynakBirleştirici

Çalışanların desteklenmesi, bu araçların her birinin çağrılmasıyla elde edilen JVM başlangıç maliyetlerinden tasarruf ederek ve bunları devam ettirerek sistemde bellek kullanımının artmasını sağlayarak performansı artırabilir.

Çalışanları bu işlemler için etkinleştirmek üzere komut satırına --config=android_workers ile aşağıdaki işaretleri uygulayın:

build:android_workers --strategy=DexBuilder=worker
build:android_workers --strategy=Javac=worker
build:android_workers --strategy=Desugar=worker

# A wrapper flag for these resource processing actions:
# - AndroidResourceParser
# - AndroidResourceValidator
# - AndroidResourceCompiler
# - RClassGenerator
# - AndroidResourceLink
# - AndroidAapt2
# - AndroidAssetMerger
# - AndroidResourceMerger
# - AndroidCompiledResourceMerger
build:android_workers --persistent_android_resource_processor

İşlem başına oluşturulan varsayılan çalışan sayısı varsayılan olarak 4 şeklindedir. Her bir işlemin örnek sayısını 1 veya 2 ile sınırlandırarak geliştirilmiş derleme performansını ölçtük. Ancak bu değer, Bazel'ın çalıştığı sisteme ve oluşturulan projeye göre değişiklik gösterebilir.

Bir işlem için örnek sayısını sınırlamak üzere aşağıdaki işaretleri uygulayın:

build:android_workers --worker_max_instances=DexBuilder=2
build:android_workers --worker_max_instances=Javac=2
build:android_workers --worker_max_instances=Desugar=2
build:android_workers --worker_max_instances=AaptPackage=2
# .. and so on for each action you're interested in.

AAPT2'yi kullanma

aapt2, aapt ile kıyaslandığında performansı iyileştirdi ve daha küçük APK'lar oluşturdu. aapt2 özelliğini kullanmak için --android_aapt=aapt2 işaretini kullanın veya aapt_version üzerinde android_binary ve android_local_test için aapt2 ayarlayın.

SSD optimizasyonları

--experimental_multi_threaded_digest işareti, SSD'lerdeki özet hesaplamalarını optimize etmek için yararlıdır.