Android Derlemesi Performansı

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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 başlıklı makaleye bakın.

Bayraklar bazelrc yapılandırma söz dizimindedir. Bu nedenle, 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'ın çıkış tabanında command.profile.gz adlı bir dosyaya JSON izleme profili yazar. Profili okuma ve profille etkileşim kurma hakkında bilgi edinmek için JSON Profili dokümanlarına bakı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şlemlerin anımsatıcıları şunlardır:

  • DexBuilder
  • Javac
  • Desugar
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

Çalışanların etkinleştirilmesi, bu araçların her birinin çağrılmasından kaynaklanan JVM başlatma maliyetlerinden tasarruf sağlayarak daha iyi bir derleme performansı elde edilmesini sağlayabilir ancak bu araçların kalıcı hale getirilmesi sistemdeki bellek kullanımının artmasına neden olur.

Bu işlemler için çalışanları etkinleştirmek üzere komut satırında aşağıdaki işaretleri --config=android_workers ile birlikte 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ışanların varsayılan sayısı 4'dır. Her işlem için örnek sayısını 1 veya 2 ile sınırlayarak derleme performansını iyileştirdiğimizi ölçtük. Ancak bu, Bazel'in üzerinde çalıştığı sisteme ve oluşturulan projeye bağlı olarak değişebilir.

Bir işlem için örnek sayısını sınırlamak üzere şu 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'e kıyasla daha iyi performans sunar ve daha küçük APK'lar oluşturur. aapt2 özelliğini kullanmak için --android_aapt=aapt2 işaretini kullanın veya android_binary ve android_local_test üzerinde aapt_version için aapt2 değerini ayarlayın.

SSD optimizasyonları

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