Make से Soong में बदलना

Android 7.0 रिलीज़ होने से पहले, Android सिर्फ़ अपने बिल्ड नियमों को बताने और उन्हें लागू करने के लिए, GNU Make का इस्तेमाल करता था. Make बिल्ड सिस्टम का इस्तेमाल और इसके साथ काम करने की सुविधा, कई प्लैटफ़ॉर्म पर उपलब्ध है. हालांकि, Android के स्केल पर यह धीमा हो गया, गड़बड़ियों का खतरा बढ़ गया, और इसे स्केल नहीं किया जा सका. साथ ही, इसकी जांच करना मुश्किल हो गया. Soong बिल्ड सिस्टम, Android बिल्ड के लिए ज़रूरी सुविधाएं देता है. हम Android के बिल्ड सिस्टम में बड़े बदलाव कर रहे हैं. हम Make (Android.mk) बिल्ड सिस्टम को बंद कर रहे हैं और इसकी जगह Soong (Android.bp) को इस्तेमाल कर रहे हैं.

इस वजह से, प्लैटफ़ॉर्म डेवलपर को जल्द से जल्द Make से Soong पर स्विच करने का सुझाव दिया जाता है. सहायता पाने के लिए, Android Building Google ग्रुप को सवाल भेजें.

Soong क्या है?

Soong बिल्ड सिस्टम को Android 7.0 (Nougat) में, Make की जगह इस्तेमाल करने के लिए पेश किया गया था. यह Android के बिल्ड को तेज़ करने के लिए, Kati GNU Make क्लोन टूल और Ninja बिल्ड सिस्टम कॉम्पोनेंट का इस्तेमाल करता है.

सामान्य निर्देशों के लिए, Android ओपन सोर्स प्रोजेक्ट (AOSP) में Android Make Build System का ब्यौरा देखें. साथ ही, Make से Soong पर स्विच करने के लिए ज़रूरी बदलावों के बारे में जानने के लिए, Android.mk फ़ाइल लिखने वालों के लिए Build System में हुए बदलाव देखें. मुख्य शब्दों की परिभाषाओं के लिए, शब्दावली में बिल्ड से जुड़ी एंट्री देखें. साथ ही, पूरी जानकारी के लिए Soong Modules Reference देखें.

नेमस्पेस मॉड्यूल देखें.

मेक और सूंग की तुलना

यहां Make कॉन्फ़िगरेशन की तुलना, Soong कॉन्फ़िगरेशन (ब्लूप्रिंट या .bp) फ़ाइल में एक ही काम करने वाले Soong कॉन्फ़िगरेशन से की गई है.

उदाहरण बनाना

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libxmlrpc++
LOCAL_MODULE_HOST_OS := linux

LOCAL_RTTI_FLAG := -frtti
LOCAL_CPPFLAGS := -Wall -Werror -fexceptions
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src

LOCAL_SRC_FILES := $(call \
     all-cpp-files-under,src)
include $(BUILD_SHARED_LIBRARY)

सॉन्ग का उदाहरण

cc_library_shared {
     name: "libxmlrpc++",

     rtti: true,
     cppflags: [
           "-Wall",
           "-Werror",
           "-fexceptions",
     ],
     export_include_dirs: ["src"],
     srcs: ["src/**/*.cpp"],

     target: {
           darwin: {
                enabled: false,
           },
     },
}

टेस्ट के लिए खास तौर पर बनाए गए Soong कॉन्फ़िगरेशन के उदाहरणों के लिए, सिंपल बिल्ड कॉन्फ़िगरेशन देखें.

कन्वर्ज़न का बुनियादी तरीका

androidmk हेल्पर टूल का इस्तेमाल करके, Android.mk फ़ाइल को Android.bp फ़ाइल में बदलने का सामान्य वर्कफ़्लो आम तौर पर यह होता है. आम तौर पर, कन्वर्ज़न में ये चरण शामिल होते हैं.

  1. टर्मिनल एनवायरमेंट सेट अप करना और androidmk टूल बनाना.

    androidmk एक कमांड लाइन टूल है. यह Android.mk फ़ाइल को पार्स करता है और उससे मिलती-जुलती Android.bp फ़ाइल को आउटपुट करने की कोशिश करता है. यह ज़्यादातर Android.mk फ़ाइलों को Android.bp फ़ॉर्मैट में बदल सकता है. इसके लिए, आपको मैन्युअल तरीके से बहुत कम या कोई बदलाव नहीं करना पड़ता.

    cd <root-of-the-tree>
    source build/envsetup.sh
    lunch <lunch-target>
    m androidmk
    
  2. Android.mk की मदद से बनाएं: sh m <module-name>

  3. androidmk कन्वर्ज़न टूल का इस्तेमाल करें: sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

  4. Android.bp फ़ाइल में मैन्युअल तरीके से बदलाव करने के लिए:

    • androidmk टूल से मिली किसी भी चेतावनी को ठीक करें.
    • कॉपीराइट हेडर को बनाए रखें या जोड़ें. अगर कोई नया जोड़ना है, तो मौजूदा साल का इस्तेमाल करें.
  5. Android.mk फ़ाइल हटाएं और Android.bp फ़ाइल का इस्तेमाल करके बनाएं.

  6. बनाए गए आर्टफ़ैक्ट की तुलना करके या यूनिट और फ़ंक्शनल टेस्ट चलाकर, कन्वर्ज़न की पुष्टि करें.

  7. बदलावों को सेव करें और समीक्षा के लिए अपलोड करें.

ज़्यादा जानकारी के लिए, Android.bp फ़ाइल फ़ॉर्मैट देखें.