Android Derlemesi Performansı

Sorun bildir Kaynağı görüntüleyin Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bu sayfada, özellikle Android uygulamaları için derleme performansını optimize etmeyle ilgili bilgiler bulunmaktadı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 dizimindedir, böylece 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ı desteklemektedir.

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

  • DexBuilder
  • Javac
  • Tatlı
  • 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 sistemdeki 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ş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.