Android Derlemesi Performansı

Sorun bildirme Kaynağı görüntüleme Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bu sayfada, özellikle Android uygulamaları için derleme performansını optimize etme hakkında bilgiler bulunmaktadır. Bazel ile genel derleme performansı optimizasyonu için Performansı Optimizasyon başlıklı makaleyi inceleyin.

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

Performans profilleme

Bazel, varsayılan olarak JSON izleme profilini Bazel'in çıkış tabanında command.profile.gz adlı bir dosyaya yazar. Profili okuma ve profille etkileşime geçme hakkında bilgi edinmek için JSON Profili belgelerine bakın.

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

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

Bu işlemlerin kısaltmaları şunlardır:

  • DexBuilder
  • Javac
  • Şeker ayrıştırma
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

İşleyicileri etkinleştirmek, bu araçların her birinin çağrılmasıyla ilgili JVM başlatma maliyetlerinden tasarruf ederek daha iyi derleme performansı sağlayabilir ancak bu araçlar kalıcı hale getirildiğinde sistemde bellek kullanımı artar.

İşçileri bu işlemler için etkinleştirmek üzere komut satırında --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 kalıcı çalışan sayısı varsayılan olarak 4'tür. Her işlem için örnek sayısını 1 veya 2 ile sınırlayarak geliştirilmiş derleme performansını ölçtük. Ancak bu durum, Bazel'in çalıştığı sisteme ve derlenen projeye bağlı olarak değişiklik gösterebilir.

Bir işlemin örnek sayısını sınırlamak için 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'a kıyasla daha iyi performansa sahiptir ve daha küçük APK'lar oluşturur. aapt2 kullanmak için --android_aapt=aapt2 işaretini kullanın veya android_binary ile android_local_test'te aapt_version üzerinde aapt2'yi ayarlayın.

SSD optimizasyonları

--experimental_multi_threaded_digest işareti, SSD'lerde özet hesaplamayı optimize etmek için kullanışlıdır.