इस पेज पर, 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
का इस्तेमाल किया जा रहा हो.