एबीआई को मॉनिटर करने की सुविधा चलाएं

इस पेज पर, Android कर्नेल एबीआई को दिखाने और उसे चलाने का तरीका बताया गया है एबीआई की निगरानी. यह सिर्फ़ Android 14 और उच्च. पुराने वर्शन के लिए, यह देखें कर्नेल के पुराने वर्शन.

Kलीफ़ के लिए संदर्भ दस्तावेज़ भी देखें: एबीआई मॉनिटर करने की सुविधा के साथ काम करता है (जीकेआई) और एबीआई को मॉनिटर करने की सुविधा के साथ काम करता है (डिवाइस).

कर्नेल और उसका एबीआई रूप बनाएं

जीकेआई सोर्स डाउनलोड करने के बाद GKI कर्नेल और ABI आर्टफ़ैक्ट बनाने के लिए, नीचे दिया गया कमांड चलाएँ:

tools/bazel run //common:kernel_aarch64_abi_dist

यह कमांड, मौजूदा एबीआई को तैयार करता है और इसे out_abi/kernel_aarch64/dist/abi.stg, बिल्ट-इन कर्नेल और मॉड्यूल के साथ.

कमांड के आखिर में, एबीआई टूल के लिए ज़्यादा आर्ग्युमेंट तय किए जा सकते हैं -- के बाद. उदाहरण के लिए, एबीआई का डेस्टिनेशन बदलने और आर्टफ़ैक्ट बनाने के लिए, आपको --dist_dir विकल्प का इस्तेमाल कर सकते हैं:

tools/bazel run //common:kernel_aarch64_abi_dist -- --dist_dir=out/dist

बिल्ड और रेफ़रंस रेप्रज़ेंटेशन के बीच एबीआई के अंतर का विश्लेषण करें

//common:kernel_aarch64_abi_dist टारगेट, जिसे ऊपर दिए गए निर्देश में लागू किया गया है, बिल्ड और रेफ़रंस फ़ाइल के बीच के एबीआई के अंतर का विश्लेषण करके, उनकी रिपोर्ट देता है common/android/abi_gki_aarch64.stg पर मौजूद प्रतिनिधित्व (इसमें परिभाषित किया गया है BUILD.bazel). इन अंतरों को बिल्ड के अंत में प्रिंट किया जाता है, जैसा कि नीचे दिया गया उदाहरण:

INFO: From [stg] Comparing Kernel ABI @//common:kernel_aarch64_abi_diff:
INFO: ABI DIFFERENCES HAVE BEEN DETECTED!

प्रिंट की गई रिपोर्ट, यहां मौजूद बिल्ड आर्टफ़ैक्ट से ली जाती है out_abi/kernel_aarch64/dist/abi_stgdiff/abi.report.short और इसमें मौजूद रिपोर्ट अन्य प्रारूप.

ऑटोमेशन को बिल्ड निर्देश के एग्ज़िट कोड का इस्तेमाल करना चाहिए, जो शून्य नहीं होता है, अगर थोड़ा बहुत अंतर नज़र आता है.

ध्यान दें कि डेवलपमेंट का चरण android-mainline जैसी ब्रांच में, एबीआई का कोई रेफ़रंस नहीं होता है. इसके बिना, //common:kernel_aarch64_abi_dist को कोई अंतर नहीं दिखेगा.

पहचान फ़ाइल एबीआई के तौर पर अपडेट करें

ऐसा कोई भी बदलाव जो कर्नेल एबीआई पर असर डालता है, जैसे कि सिंबल सूची अपडेट, को रेफ़रंस एबीआई के तौर पर दिखना चाहिए (common/android/abi_gki_aarch64.stg, इसमें परिभाषित किया गया है BUILD.bazu भी हो सकता है. ऐसा करने के लिए आपको नीचे दिया गया कमांड चलाना होगा:

​​tools/bazel run //common:kernel_aarch64_abi_update

इस निर्देश की मदद से, एबीआई में अंतर का विश्लेषण करें और संदर्भ का इस्तेमाल कर सकते हैं. इसके बाद, अपडेट किया गया एबीआई जो परिवर्तन के समान हैं. ये अंतर शामिल करें कि तय किए गए मैसेज में $DIST_DIR/abi.report.short की शिकायत करें.

एबीआई की निगरानी और डिवाइस टारगेट

एबीआई मॉनिटरिंग को सिर्फ़ कोर कर्नेल बिल्ड टारगेट के लिए कॉन्फ़िगर किया जाना चाहिए. मिले-जुले बिल्ड कॉन्फ़िगरेशन (जो base_kernel को परिभाषित करते हैं) जो सीधे GKI कर्नेल को सिर्फ़ डिवाइस सिंबल को ट्रैक करने के लिए सहायता जोड़नी होगी सूची में बदल दिया जाएगा. एबीआई की परिभाषा को जीकेआई बिल्ड का इस्तेमाल करके अपडेट किया जाना चाहिए.

Kleaf के लिए रेफ़रंस दस्तावेज़ भी देखें: एबीआई मॉनिटर करने की सुविधा के साथ काम करता है (डिवाइस).

kernel के पुराने वर्शन

Android 13

बिल्ड करने के निर्देश ज़्यादातर इसके समान होते हैं Android 14. हालांकि, एबीआई फ़ॉर्मैट एक्सएमएल और रेफ़रंस एबीआई के तौर पर common/android/abi_gki_aarch64.xml है.

Android 13 और उससे पहले वाले वर्शन के लिए

Android 13 की तरह ही, एबीआई फ़ॉर्मैट, एक्सएमएल होता है.

पुराने कर्नेल Kleaf के बजाय build.sh का इस्तेमाल करते हैं. एबीआई को मॉनिटर करने के लिए, build_abi.sh, जो टेंप्लेट को कस्टमाइज़ करने के लिए एक जैसे एनवायरमेंट वैरिएबल स्वीकार करता है build.sh के तौर पर बिल्ड करें. उदाहरण के लिए:

BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh

यह कर्नेल बनाता है और एबीआई को, OUT_DIR में एक्सट्रैक्ट कर देता है सबडायरेक्ट्री (यह डिफ़ॉल्ट रूप से out_abi होती है) और यह क्लीफ़ का //common:kernel_aarch64_abi_dist लक्ष्य (देखें कर्नेल और एबीआई आर्टफ़ैक्ट बनाएं).

रेफ़रंस एबीआई के तौर पर दिखाने के तरीके को android/abi_gki_aarch64.xml में इस तरह सेव किया गया है common/build.config.gki.aarch64 में ABI_DEFINITION वैरिएबल के ज़रिए तय किया गया.

अगर आपको कर्नेल एबीआई रिप्रज़ेंटेशन को अपडेट करना है, तो इसका सबसे आसान तरीका है --update और --print-report विकल्पों का इस्तेमाल करने के लिए:

BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-report

--print-report, फ़ाइल के मौजूदा एबीआई के अंतर को प्रिंट करता है और नया जनरेट किया गया एबीआई.

--update विकल्प, पहचान फ़ाइल के एबीआई की जगह ले लेता है. इससे यह भी होता है यह सिंबल सूची अपडेट जब KMI_SYMBOL_LIST कॉन्फ़िगर किए गए डिवाइस के लिए, BUILD_CONFIG का इस्तेमाल किया जा रहा हो.