Android Derlemesi Performansı

Sorun bildirme Kaynağı görüntüleme Nightly · 7.4 .

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.

Profil oluşturma performansı

Bazel, varsayılan olarak Bazel'in çıkış tabanındaki command.profile.gz adlı dosyaya bir JSON izleme profili 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

Çalışanların etkinleştirilmesi, bu araçların her birini çağırarak JVM başlatma maliyetlerinden tasarruf ederek daha iyi derleme performansı sağlayabilir. Ancak bu araçların devam ettirilmesi, sistemdeki bellek kullanımının artmasını sağlar.

İşç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ş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'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.