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

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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

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

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

Android बिल्ड ऐक्शन के लिए पर्सिस्टेंट वर्कर.

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

इन कार्रवाइयों के लिए इस्तेमाल किए जाने वाले छोटे नाम ये हैं:

  • DexBuilder
  • Javac
  • Desugar
  • 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 से बेहतर है. साथ ही, इससे छोटे APK भी बनाए जा सकते हैं. aapt2 का इस्तेमाल करने के लिए, --android_aapt=aapt2 फ़्लैग का इस्तेमाल करें या android_binary और android_local_test पर aapt_version पर aapt2 सेट करें.

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

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