Android बिल्ड परफ़ॉर्मेंस

इस पेज में खास तौर पर Android ऐप्लिकेशन के लिए बिल्ड परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के बारे में जानकारी दी गई है. Bazel की मदद से, कैंपेन की सामान्य परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, परफ़ॉर्मेंस को ऑप्टिमाइज़ करना देखें.

फ़्लैग bazelrc कॉन्फ़िगरेशन सिंटैक्स में हैं, ताकि उन्हें सीधे bazelrc फ़ाइल में चिपकाया जा सके और कमांड लाइन पर --config=<configuration_name> के साथ शुरू किया जा सके.

प्रोफ़ाइलिंग परफ़ॉर्मेंस

Bazel, डिफ़ॉल्ट रूप से, Bazel के आउटपुट बेस में command.profile.gz नाम की फ़ाइल में, एक JSON ट्रेस प्रोफ़ाइल लिखता है. प्रोफ़ाइल को पढ़ने और उससे इंटरैक्ट करने का तरीका जानने के लिए, JSON प्रोफ़ाइल का दस्तावेज़ देखें.

Android बिल्ड ऐक्शन के लिए लगातार काम करने वाले वर्कर.

Android बिल्ड ऐक्शन के एक सबसेट से नियमित तौर पर काम करने वाले कर्मचारियों की सुविधा मिलती है.

इन क्रिया के स्मेनिक हैं:

  • DexBuilder
  • जावाक
  • डिसुगर
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

वर्कर को चालू करने से, इनमें से हर टूल को शुरू करने से जेवीएम स्टार्टअप लागत की बचत होती है, लेकिन उन्हें बनाए रखने से सिस्टम पर मेमोरी के इस्तेमाल में होने वाली बचत होती है.

वर्कर को इन कार्रवाइयों के लिए चालू करने के लिए, कमांड लाइन पर --config=android_workers के साथ इन फ़्लैग को लागू करें:

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

हर कार्रवाई के लिए, स्थायी वर्कर बनाने की डिफ़ॉल्ट संख्या 4 है. हमने बिल्ड की परफ़ॉर्मेंस को मेज़र किया है. इसके लिए, हमने हर कार्रवाई के इंस्टेंस की संख्या को 1 या 2 पर सेट किया है. हालांकि, यह इस बात पर निर्भर करता है कि Bazel किस सिस्टम पर चल रहा है और प्रोजेक्ट बनाया जा रहा है.

किसी कार्रवाई के इंस्टेंस की संख्या को सीमित करने के लिए, ये फ़्लैग लागू करें:

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 का इस्तेमाल करना

aapt2 ने aapt की परफ़ॉर्मेंस को बेहतर बनाया है. साथ ही, यह छोटे APKs भी बनाता है. aapt2 का इस्तेमाल करने के लिए, --android_aapt=aapt2 फ़्लैग का इस्तेमाल करें या android_binary और android_local_test पर aapt_version पर aapt2 सेट करें.

एसएसडी ऑप्टिमाइज़ेशन

--experimental_multi_threaded_digest फ़्लैग, एसएसडी पर डाइजेस्ट कंप्यूटेशन को ऑप्टिमाइज़ करने में मदद करता है.