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

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

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

$ echo "$TARGET_PRODUCT-$TARGET_RELEASE-$TARGET_BUILD_VARIANT"

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

lunch product_name-release-build_variant

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

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

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

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

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

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

कोड बनाएं

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

$ m

आपको जो पहला आउटपुट दिखेगा वह आपके टारगेट और बिल्ड का सारांश होगा वातावरण:

============================================
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
============================================

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

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

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

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

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

अगर एओएसपी 8 या इससे पहले का वर्शन बनाया जा रहा है, तो हो सकता है कि 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
************************************************************

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

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