Android SDK बिल्ड-टूल्स, प्लेटफ़ॉर्म-टूल और टूल क्या हैं? और किस संस्करण का उपयोग किया जाना चाहिए?


331

मुझे पता है कि यह एक बहुत ही अल्पविकसित प्रश्न है, लेकिन मेरे आश्चर्य की बात है, मुझे एंड्रॉइड एसडीके बिल्ड-टूल्स के बारे में कोई दस्तावेज नहीं मिला। एंड्रॉइड एसडीके टूल्स और एंड्रॉइड एसडीके प्लेटफॉर्म-टूल्स के अलावा, एंड्रॉइड एसडीके बिल्ड-टूल्स का एक गुच्छा है जैसा कि संलग्न स्क्रीनशॉट में दिखाया गया है। क्या कोई इन सभी को समझाने वाले स्रोत की ओर इशारा कर सकता है और यह स्पष्ट करने में मदद कर सकता है कि उपयोग के लिए एंड्रॉइड एसडीके बिल्ड-टूल्स का एक निश्चित संस्करण कैसे चुना जाता है?

यहां छवि विवरण दर्ज करें

संपादित (2014-02-27) :

मुझे अभी भी सभी उपकरण पूरी तरह से समझ नहीं आ रहे हैं। Google के नवीनतम दस्तावेजों के आधार पर मेरी सीमित समझ निम्नलिखित है:

  • Android SDK बिल्ड-टूल्स Android SDK प्लेटफ़ॉर्म-टूल्स के घटक हुआ करते थे । उन्हें एंड्रॉइड एसडीके प्लेटफ़ॉर्म-टूल्स से डिकॉउंट किया गया है, ताकि बिल्ड टूल्स को एकीकृत विकास वातावरण (आईडीई) घटकों से स्वतंत्र रूप से अपडेट किया जा सके।
  • एंड्रॉइड एसडीके प्लेटफ़ॉर्म-टूल नवीनतम एंड्रॉइड प्लेटफ़ॉर्म की सुविधाओं का समर्थन करने के लिए अनुकूलित हैं। वे पिछड़े संगत हैं ताकि आप हमेशा एंड्रॉइड एसडीके प्लेटफॉर्म-टूल्स के नवीनतम अपडेट का उपयोग करें यहां तक ​​कि आपके ऐप पुराने एंड्रॉइड प्लेटफॉर्म को भी लक्षित करते हैं।
  • SDK टूल प्लेटफ़ॉर्म इंडिपेंडेंट हैं और इसके लिए कोई फर्क नहीं पड़ता कि आप कौन सा एंड्रॉइड प्लेटफ़ॉर्म डेवलप कर रहे हैं।

मैं अभी भी लेने का औचित्य समझ में नहीं आता Android SDK बिल्ड-उपकरण से बाहर एंड्रॉयड एसडीके मंच-उपकरण जो एक उदाहरण है और अद्यतन का प्रबंधन करने के लिए आसान है। एकमात्र संभावित कारण जो मैं सोच सकता हूं, वह यह है कि कुछ ऐप्स को उन्हें बनाने के लिए पुराने बिल्ड घटकों पर निर्भर रहना पड़ता है। Google के दस्तावेज़ में इसका उल्लेख किया गया है, लेकिन इसकी व्याख्या नहीं की गई है। रिलीज नोटों को देखते हुए, आप देखेंगे कि एंड्रॉइड एसडीके बिल्ड-टूल्स के अपडेट मुख्य रूप से बग को ठीक करने या नए प्लेटफार्मों के लिए समर्थन जोड़ने के लिए हैं। एंड्रॉइड एसडीके बिल्ड-टूल्स के पुराने संस्करणों का उपयोग करने के लिए कुछ ऐप्स के बारे में मैं केवल यही सोच सकता हूं कि वे एंड्रॉइड एसडीके बिल्ड-टूल्स के कुछ बग पर भरोसा करते हैं।। ये ऐप इन बग्स के साथ बनाए बिना सामान्य रूप से काम नहीं करेगा। काश, Google एक या दो उदाहरण देकर यह बेहतर समझा सकता कि उपकरण में ये बग कुछ ऐप्स के लिए महत्वपूर्ण क्यों हैं।

जवाबों:


88

एंड्रॉइड एसडीके बिल्ड-टूल्स के संस्करण के बारे में , उत्तर है

डिफ़ॉल्ट रूप से, Android SDK बिल्ड टूल्स के सबसे हाल ही में डाउनलोड किए गए संस्करण का उपयोग करता है।

स्रोत

ग्रहण में, आप फ़ाइल sdk.buildtoolsमें संपत्ति का उपयोग करके एक विशिष्ट संस्करण चुन सकते हैं project.properties

लगता है कि कोई आधिकारिक पृष्ठ नहीं है जो सभी बिल्ड टूल को समझाता हो। इस बारे में एंड्रॉइड टीम का कहना है।

[निर्माण] उपकरण, जैसे कि एडाप्टल, एप्ट, डेक्सडंप, और डीएक्स, आमतौर पर एंड्रॉइड बिल्ड टूल या एंड्रॉइड डेवलपमेंट टूल्स (एडीटी) द्वारा कहा जाता है, इसलिए आपको शायद ही कभी इन उपकरणों को सीधे इनवॉइस करने की आवश्यकता होती है। एक सामान्य नियम के रूप में, आपको उन्हें आवश्यकतानुसार कॉल करने के लिए बिल्ड टूल्स या ADT प्लगइन पर भरोसा करना चाहिए।

स्रोत

वैसे भी, यहाँ उपकरणों, प्लेटफ़ॉर्म-टूल्स और बिल्ड-टूल्स के बीच अंतर का संश्लेषण है:

  • Android एसडीके उपकरण
    • स्थान: $ANDROID_HOME/tools
    • मुख्य उपकरण: चींटी स्क्रिप्ट (आपके APK बनाने के लिए) और ddms(डिबगिंग के लिए)
  • Android SDK प्लेटफ़ॉर्म-टूल
    • स्थान: $ANDROID_HOME/platform-tools
    • मुख्य उपकरण: adb(एमुलेटर या एंड्रॉइड डिवाइस की स्थिति का प्रबंधन करने के लिए)
  • Android SDK बिल्ड-टूल्स
    • स्थान: $ANDROID_HOME/build-tools/$VERSION/
    • प्रलेखन
    • मुख्य उपकरण: aapt(R.java और अनलगनेटेड, अहस्ताक्षरित एपीके) उत्पन्न करने के लिए, dx(जावा बाइटकोड को डाल्विक बायटेकोड में बदलने के लिए), और zipalign(आपके एपीके को अनुकूलित करने के लिए)

मुझे वास्तव में खुशी है कि विभिन्न बिल्ड टूल्स संस्करणों के लिए परिवर्तन लॉग है
इवोक्स

@ लैक्टन I ने अपनी परियोजना के लिए पुराने बिल्ड टूल (संस्करण 17) का उपयोग किया। क्या मैं इसे नवीनतम बिल्ड टूल के साथ पुनर्निर्माण कर सकता हूं?
user1156041

क्या हम ग्रहण और स्टूडियो के लिए एक ही sdk + बिल्ड टूल का उपयोग कर सकते हैं?
मुहम्मद बाबर

38

एंड्रॉइड एसडीके बिल्ड टूल का उपयोग एंड्रॉइड एप्लिकेशन को डिबग, बिल्ड, रन और टेस्ट करने के लिए किया जाता है।

एंड्रॉइड बिल्ड टूल्स का उपयोग कमांड लाइन या आईडीई (यानी एक्लिप्स या एंड्रॉइड स्टूडियो) से विकसित और काम करने के लिए किया जा सकता है।

Android उपकरणों को जोड़ने और उन्हें रूट करने के लिए भी उपयोग किया जाता है। (fastboot, adb और अधिक ..)

हमेशा नवीनतम का उपयोग करें। (अनुशंसित)

Android बिल्ड टूल और कमांड के बारे में अधिक जानकारी


जानकारी के लिए धन्यवाद। क्या आपका मतलब है कि एंड्रॉइड बिल्ड टूल "एंड्रॉइड डिवाइस को कनेक्ट करने और उन्हें रूट करने के लिए उपयोग किया जाता है"? Android प्लेटफ़ॉर्म टूल्स का एक हिस्सा adbis। क्या adb कार्य करने के लिए Android Build Tools पर निर्भर करता है? यदि हां, तो कैसे? मैं उत्सुक हूँ।
हांग

adb का उपयोग कमांड लाइन से फाइलों को पुश करने और खींचने के लिए किया जा सकता है। (अधिक कार्यक्षमता।) फास्टबूट का उपयोग कस्टम बूट लोडरों को फ्लैश करने के लिए किया जा सकता है। हालाँकि ये कमांड एंड्रॉइड डेवलपमेंट के लिए उपयोगी नहीं हैं जब तक कि आप डेवलपमेंट के लिए टर्मिनल का उपयोग नहीं करते हैं। आईडीई में ही सब कुछ उपलब्ध है।
9

1
मेरी समझ है ग्रहण पृष्ठभूमि में adb.exe का उपयोग करता है।
हांगकांग

@mipreamble तो android sdk में क्या अंतर है: टूल्स, प्लेटफॉर्म-टूल्स और बिल्ड-टूल्स? मैं बिल्ड-टूल के बिना अपना ऐप बना और चला सकता हूं।
क्रेकर

1
@CJBS हाँ। एक संस्करण के लिए सेट टूल के साथ चिपका काम करेगा। जब Android का नया संस्करण आता है, तो बिल्ड टूल अपडेट किए जाते हैं। आप नवीनतम Android संस्करणों के लिए एप्लिकेशन को संकलित और परीक्षण करना चाहते हैं।
मिलिप्रैबल

16

मैं बिल्ड टूल्स, प्लेटफ़ॉर्म टूल्स और टूल्स के बीच अंतर की चर्चा दूसरों पर छोड़ता हूँ। एक व्यावहारिक दृष्टिकोण से, आपको केवल अपने दूसरे प्रश्न का उत्तर जानना होगा:

किस संस्करण का उपयोग किया जाना चाहिए?

उत्तर: सबसे हाल के संस्करण का उपयोग करें।

ग्रैडल के साथ एंड्रॉइड स्टूडियो का उपयोग करने वालों के लिए, (मॉड्यूल: ऐप) फ़ाइल buildToolsVersionमें सेट करना होगा build.gradle

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...
}

मुझे बिल्ड टूल्स का सबसे हालिया संस्करण नंबर कहां से मिला?

Android SDK प्रबंधक खोलें।

  • Android Studio में टूल > Android > SDK Manager > Appearance & Behavior > System Settings > Android SDK पर जाएं
  • चुनें एसडीके उपकरण टैब।
  • सूची से Android एसडीके बिल्ड टूल चुनें
  • चेक दिखाएँ पैकेज विवरण

अंतिम आइटम सबसे हाल का संस्करण दिखाएगा।

यहां छवि विवरण दर्ज करें

यकीन है कि यह स्थापित है, फिर के रूप में उस नंबर लिखने buildToolsVersionमें build.gradle(मॉड्यूल: अनुप्रयोग)।


1
यदि 24.0.2 है, तो 24.0.1 और 24 को अप्रचलित के रूप में चिह्नित नहीं किया गया है (स्टैंडअलोन प्रबंधक अप्रचलित पैकेजों को दिखाने / छिपाने की अनुमति देता है)?
user1803551

3
@ user1803551, यह हमेशा सबसे हाल ही में निर्मित उपकरण संस्करण का स्वचालित रूप से उपयोग करने के लिए वांछनीय नहीं है। उदाहरण के लिए, मान लें कि आपने किसी विशेष बिल्ड टूल संस्करण के साथ अपने ऐप का पहले ही पूर्ण परीक्षण कर लिया है। यदि आप अपने बिल्ड टूल को अपडेट करते हैं, तो संभव है कि आपके ऐप में कुछ बदलाव हो सकता है। पुराने बिल्ड टूल संस्करणों का उपयोग करते रहने के लिए डेवलपर्स को अनुमति देना उन्हें यह सुनिश्चित करने की अनुमति देता है कि उनका निर्माण अपेक्षित रूप से काम करता रहेगा। यदि आप अप्रचलित घोषित किए गए के पैटर्न को देखते हैं, तो आप देख सकते हैं कि 24 और 24.0.1 अंततः अप्रचलित घोषित किए जाएंगे।
सूरगाछ १ch

13

आप इस Android - कमांड लाइन टूल्स में इनके बारे में विवरण पा सकते हैं


tl; डॉ:

एसडीके उपकरण:

  1. Android SDK प्रबंधक (sdkmanager)
  2. एवीडी प्रबंधक (एवडमैनगर)
  3. Dalvik डिबग मॉनिटर सर्वर (ddms)

उपकरण बनाएँ:

  1. हस्ताक्षरकर्ता
  2. ProGuard
  3. zipalign
  4. jobb

प्लेटफ़ॉर्म उपकरण:

  1. एशियाई विकास बैंक
  2. सहायता, एपट, डेक्सडंप और डीएक्स
  3. bmgr
  4. logcat

1
सहायता, aapt, dexdump, और dx ये प्लेटफ़ॉर्म टूल के घटक हैं न कि प्लेटफ़ॉर्म टूल्स
मासुम

9

सही जवाब है

प्लेटफ़ॉर्म-टूल घटक से एंड्रॉइड एसडीके के बिल्ड-विशिष्ट घटकों को अस्वीकृत कर दिया, ताकि बिल्ड टूल्स को एकीकृत विकास वातावरण (आईडीई) घटकों से स्वतंत्र रूप से अपडेट किया जा सके।

लिंक (विस्तार 17 संशोधन)


4
जानकारी के लिए धन्यवाद। अगर नए संस्करणों में पुराने संस्करणों में सुधार किया जाता है, तो Google के पास केवल एक बिल्ड-टूल क्यों नहीं है और इसे एसडीके टूल्स और प्लेटफ़ॉर्म-टूल की तरह अपडेट करते रहना चाहिए? दूसरे शब्दों में, पुराने संस्करणों के वहाँ होने का क्या कारण है?
हांग

2
मैंने अभी इस उत्तर को उखाड़ने की कोशिश की है, लेकिन यह पता चला है कि मैंने पिछले साल इसे पहले ही उखाड़ दिया था! @ हाँ, वे पुराने बिल्ड टूल रखते हैं क्योंकि जैसे-जैसे वे टूल अपडेट करते जाते हैं, कुछ फीचर अपग्रेड होते जाते हैं। लेकिन ऐप डेवलपर्स के पास स्रोत कोड हो सकता है जो उन विशेषताओं पर निर्भर करता है ताकि वे उन पुराने कोड बेस का समर्थन करने के लिए पुराने संस्करणों को उपलब्ध रखें।
mateor

1
इस मामले में, क्या उनके पास पदावनत सुविधाओं की एक सूची होनी चाहिए ताकि डेवलपर्स को यह पता चल सके कि क्या उन्हें अभी भी पुराने संस्करणों का उपयोग करना है?
हांग

@ हाँग: बिल्कुल यही सवाल है जिसकी मुझे तलाश थी। अब ... एक उत्तर खोजने के लिए बंद :)
DerpyNerd

2

एंड्रॉइड एसडीके बिल्ड टूल वास्तव में वही है जो नाम कहता है कि वे हैं; Android एप्लिकेशन के निर्माण के लिए टूल। नवीनतम बिल्ड टूल संस्करण (Android SDK के माध्यम से आपके IDE द्वारा स्वचालित रूप से चयनित) का उपयोग करना बहुत महत्वपूर्ण है, लेकिन पुराने संस्करणों को वहीं छोड़ देने का कारण पिछड़ी अनुकूलता का समर्थन करना है, यही कारण है कि आपकी परियोजनाएं निर्भर करती हैं बिल्ड टूल्स के पुराने संस्करण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.