Android Derlemesi Performansı

Sorun bildirin Kaynağı göster

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.

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ş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ümesinde kalıcı çalışanları desteklemektedir.

Bu işlemlerin anımsatıcıları:

  • DexBuilder
  • Java
  • Tatlı
  • 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.

Çalışanları bu işlemlerde etkinleştirmek için komut satırında bu işaretleri --config=android_workers ile 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 kalıcı çalışan sayısı: 4. Her işlem için örnek sayısını 1 veya 2 olarak sınırlayarak iyileştirilmiş derleme performansını ölçtük. Ancak bu, Bazel'in üzerinde çalıştığı sisteme ve projenin oluşturulduğuna bağlı olarak değişebilir.

Bir işlem için örnek sayısını sınırlamak amacıyla ş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 ile kıyaslandığında performansı iyileştirdi ve ayrıca daha küçük APK'lar oluşturdu. aapt2 özelliğini kullanmak için --android_aapt=aapt2 işaretini kullanın veya android_binary ve android_local_test üzerinde aapt_version üzerinde aapt2 değerini ayarlayın.

SSD optimizasyonları

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