Android बनाएं

Android बिल्ड करने के लिए इस पेज पर दिए गए निर्देशों का पालन करें.

अपना बिल्ड एनवायरमेंट सेट अप करना

बिल्ड एनवायरमेंट को सेट अप करने के लिए, अपनी वर्किंग डायरेक्ट्री में envsetup.sh स्क्रिप्ट बनाएं:

source build/envsetup.sh

यह स्क्रिप्ट कई निर्देश इंपोर्ट करती है, जिनकी मदद से आप Android सोर्स कोड के साथ काम कर सकते हैं. इनमें इस पेज पर इस्तेमाल किए गए निर्देश भी शामिल हैं. स्क्रिप्ट का सोर्स देखने के लिए, platform/build/envsetup.sh देखें. पहले से मौजूद सहायता देखने के लिए, hmm टाइप करें.

कोई टारगेट चुनें

Android बनाने से पहले, आपको बनाने के लिए टारगेट तय करना होगा. टारगेट, उस टारगेट प्लैटफ़ॉर्म को दिखाता है जिसके लिए एसेट बनाई जा रही है. बनाए जाने वाले टारगेट की पहचान करने के लिए, lunch कमांड का इस्तेमाल करें. इसके बाद, टारगेट की जानकारी देने वाली स्ट्रिंग डालें. उदाहरण के लिए:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

आपको अपने टारगेट और बिल्ड एनवायरमेंट की खास जानकारी दिखेगी:

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================

टारगेट को दिखाने वाली स्ट्रिंग का फ़ॉर्मैट यह है:

lunch product_name-release-build_variant

इस स्ट्रिंग के कॉम्पोनेंट ये हैं:

  • product_name उस प्रॉडक्ट का नाम है जिसे आपको बनाना है, जैसे कि aosp_cf_x86_64_phone या aosp_husky. आपके डिवाइस के लिए, आपका product_name अपने फ़ॉर्मैट का इस्तेमाल कर सकता है. हालांकि, Google अपने डिवाइसों के लिए जिस फ़ॉर्मैट का इस्तेमाल करता है उसमें ये कॉम्पोनेंट होते हैं:

    • aosp का मतलब है Android ओपन सोर्स प्लैटफ़ॉर्म.
    • (ज़रूरी नहीं) cf तब शामिल किया जाता है, जब टारगेट को Cuttlefish एमुलेटर में चलाना हो.
    • आर्किटेक्चर और हार्डवेयर (कोडनेम), जैसे कि x86_64_phone या husky जो Pixel 8 Pro का कोडनेम है. Google डिवाइसों के कोडनेम की सूची देखने के लिए, डिवाइस के कोडनेम देखें.
  • release को trunk_staging पर सेट किया गया है.

  • स्ट्रिंग का build_variant वाला हिस्सा, नीचे दी गई टेबल में मौजूद तीन वैल्यू में से कोई एक हो सकता है:

    build_variant ब्यौरा
    user यह बिल्ड वैरिएंट, सुरक्षा का सीमित ऐक्सेस देता है और यह प्रोडक्शन के लिए सही है.
    userdebug इस बिल्ड वैरिएंट की मदद से, डिवाइस डेवलपर को डेवलपमेंट में चल रही रिलीज़ की परफ़ॉर्मेंस और क्षमता को समझने में मदद मिलती है. userdebug बिल्ड के साथ डेवलप करते समय, उपयोगकर्ता डीबग के लिए दिशा-निर्देशों का पालन करें.
    eng इस बिल्ड वैरिएंट में बिल्ड होने में कम समय लगता है. साथ ही, अगर आपको परफ़ॉर्मेंस और पावर की ज़रूरत नहीं है, तो यह रोज़ के डेवलपमेंट के लिए सबसे सही है.

अगर lunch को बिना किसी आर्ग्युमेंट के चलाया जाता है, तो सामान्य टारगेट की सूची दी जाती है. इस पेज पर दी गई जानकारी और डिवाइस के कोडनेम पर मौजूद, Google के खास हार्डवेयर को दिखाने वाले कोडनेम का इस्तेमाल करके, टारगेट स्ट्रिंग के एलिमेंट को जोड़कर, अपनी टारगेट स्ट्रिंग भी बनाई जा सकती है.

मौजूदा टारगेट देखना

लंच से जुड़ी मौजूदा सेटिंग देखने के लिए, दौड़ें:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

कोड बनाना

अपना टारगेट बनाने के लिए, यह कमांड चलाएं. आपके वर्कस्टेशन की स्पेसिफ़िकेशन के आधार पर, पहला बिल्ड बनाने में एक घंटे से लेकर कुछ घंटे तक लग सकते हैं. इसके बाद के बिल्ड में काफ़ी कम समय लगता है.

m

आपके बिल्ड का आउटपुट $OUT_DIR में दिखता है. अगर अलग-अलग टारगेट बनाए जाते हैं, तो हर टारगेट बिल्ड $OUT_DIR में दिखता है.

m कमांड, ट्री के सबसे ऊपर से बनता है. इसलिए, m को सब-डायरेक्ट्री से भी चलाया जा सकता है. अगर आपने TOP एनवायरमेंट वैरिएबल सेट किया है, तो m कमांड उसका इस्तेमाल करता है. अगर TOP सेट नहीं है, तो m कमांड मौजूदा डायरेक्ट्री से ट्री को खोजता है और ट्री के सबसे ऊपरी हिस्से को ढूंढने की कोशिश करती है.

m कमांड, -jN आर्ग्युमेंट की मदद से एक साथ कई टास्क मैनेज कर सकता है. अगर आपने -j आर्ग्युमेंट नहीं दिया है, तो बिल्ड सिस्टम अपने-आप एक साथ चलने वाले टास्क की वह संख्या चुनता है जो आपके सिस्टम के लिए सबसे सही है.

अपनी m कमांड लाइन में मॉड्यूल का नाम डालकर, डिवाइस की पूरी इमेज के बजाय कुछ मॉड्यूल बनाए जा सकते हैं. इसके अलावा, m कमांड कुछ ऐसे टारगेट भी उपलब्ध कराता है जिन्हें लक्ष्य कहा जाता है. उदाहरण के लिए, m nothing कुछ भी नहीं बनाता, लेकिन बिल्ड स्ट्रक्चर को पार्स और पुष्टि करता है. मान्य लक्ष्यों की सूची के लिए, m help टाइप करें.

बिल्ड से जुड़ी गड़बड़ियों को ठीक करना (8.0 या इससे पहले के वर्शन)

अगर एओएसपी 8 या इससे पहले का वर्शन बनाया जा रहा है, तो आपके Java के वर्शन में कोई समस्या आने पर, m रद्द हो सकता है. उदाहरण के लिए, आपको यह मैसेज मिल सकता है:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

इसकी संभावित वजहें और समाधान यहां दिए गए हैं:

  • आपने AOSP डेवलपमेंट (2.3 - 8.0) के लिए सेट अप के JDK सेक्शन में बताए गए तरीके से, सही JDK इंस्टॉल नहीं किया है.
  • आपके पाथ में, पहले से इंस्टॉल किया गया कोई दूसरा JDK दिख रहा है. सही JDK को अपने पाथ की शुरुआत में जोड़ें या समस्या वाले JDK को हटाएं.