Android Derlemesi Performansı

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ı Optimize Etme bölümüne bakın.

İşaretler bazelrc yapılandırması söz diziminde olduğundan doğrudan 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şimde bulunma hakkında bilgi için JSON Profili belgelerine bakın.

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

Android derleme işlemlerinin bir alt kümesi, kalıcı çalışanları destekler.

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

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

Çalışanların etkinleştirilmesi, bu araçların çağrılmasından JVM başlatma maliyetlerinde tasarruf sağlayarak daha iyi derleme performansı sağlayabilir. Ancak bu araçların devam ettirilmesi, sistemde artan bellek kullanımına neden olur.

Bu işlemlerde çalışanları etkinleştirmek için komut satırına --config=android_workers ile bu 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 varsayılan kalıcı çalışan sayısı: 4. Her işlemin örnek sayısını 1 veya 2 ile sınırlandırarak iyileştirilmiş derleme performansını ölçtük. Ancak bu süre, Bazel'ın çalıştığı sisteme ve projenin oluşturulmaya bağlı olarak farklılık gösterebilir.

Bir işlemin örnek sayısını sınırlamak için ş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 karşılaştırıldığında daha iyi performansa sahip ve daha küçük APK'lar oluşturuyor. aapt2 özelliğini kullanmak için --android_aapt=aapt2 işaretini kullanın veya android_binary ve android_local_test alanlarındaki aapt_version için aapt2 değerini ayarlayın.

SSD optimizasyonları

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