Android Derlemesi Performansı

Sorun bildirin Kaynağı göster Gece · 7,4 , 7.3 · 7,2 · 7,1 · 7,0 · 6,5

Bu sayfada, Android için derleme performansını optimize etme hakkında bilgiler yer alır örneğine bakalım. Bazel ile genel derleme performansı optimizasyonu için bkz. Performansı Optimize Etme

İşaretler bazelrc yapılandırması söz dizimi; doğrudan bir bazelrc dosyasına yapıştırılıp komut satırında --config=<configuration_name>.

Profil oluşturma performansı

Bazel, varsayılan olarak Bazel'in çıktı tabanında command.profile.gz. Şu konular için JSON Profili dokümanlarına bakın: profili okuma ve profille etkileşim kurma.

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

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

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

  • DexBuilder
  • Javac
  • Şeker ayrıştırma
  • 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. Şu anda İyileştirilmiş derleme performansını ölçtü her işlem için örnek sayısını 1 veya 2 olarak sınırlayarak, Bazel'in şu anda üzerinde çalıştığı sisteme ve projenin geliştirmenizi sağlar.

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 iyileştirildi daha küçük APK'lar oluşturur.aapt aapt2 özelliğini kullanmak için --android_aapt=aapt2 bayrağı veya şurada aapt2 ayarlayın: aapt_version android_binary ve android_local_test.

SSD optimizasyonları

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