कमांड लाइन पर एंड्रॉइड एसडीके बिल्ड टूल कैसे स्थापित करें?


292

मैं कमांड लाइन से एंड्रॉइड देव वातावरण को सेटअप करना चाहता हूं, और निम्नलिखित समस्या का सामना कर सकता हूं:

wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz

फ़ाइल निकालने के बाद, चलाएँ

tools/android update sdk --no-ui

हालाँकि, यह चलाने में बहुत धीमी है

Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml

नतीजा यह है कि फ़ोल्डर बिल्ड-टूल्स में कुछ भी नहीं है, और मैं चाहता हूं कि aapt और एपीकेबिल्डर है, क्योंकि मैं कमांड लाइन से एपीके के लिए एपीके का निर्माण करना चाहता हूं।

जवाबों:


479

डिफ़ॉल्ट रूप से, कमांड लाइन से एसडीके प्रबंधक सूची में बिल्ड टूल शामिल नहीं करता है। वे "अप्रचलित" श्रेणी में हैं। सभी उपलब्ध डाउनलोड देखने के लिए, उपयोग करें

android list sdk --all

और फिर कमांड लाइन से उस सूची में एक पैकेज प्राप्त करने के लिए, उपयोग करें:

android update sdk -u -a -t <package no.>

कहां-कहां खड़ा है -नो-उई, -ए का मतलब है - और -t का मतलब है - फील्टर।

यदि आपको कई पैकेज स्थापित करने की आवश्यकता है:

Android अपडेट sdk -u -a -t 1,2,3,4, .., n 

जहां 1,2, .., n उपरोक्त सूची क्रम के साथ सूचीबद्ध पैकेज संख्या है


4
यदि आप बिल्ड-टूल्स जैसे 18.1.1 को याद कर रहे हैं तो यह कमांड लाइन का उपयोग करके इसे स्थापित करने का सही तरीका है।
क्रे

19
यह थोड़े बेकार है, उन्होंने आधिकारिक युक्तियों--all में विकल्प का उल्लेख नहीं किया । धन्यवाद।
अलेक्जेंडर मालाखोव

4
@DanielJonker हाँ, यह है। केवल "हाँ" कमांड के लिए, प्रतिध्वनि हाँ Android अपडेट sdk --all --filter टूल्स --no-ui --force> / dev / null
nsg

4
echo "yes"को छोटा किया जा सकता है echo "y", लेकिन यह सभी मामलों में वैसे भी काम नहीं करता है। कुछ मामलों में आप फ़िल्टर और विशिष्ट पैकेज के आधार पर एक से अधिक y / n लाइसेंस प्रॉम्प्ट प्राप्त कर सकते हैं। echo "y"केवल पहले संकेत का जवाब देंगे, लेकिन बाकी नहीं। मैं इसे yesअब तक बिना किसी सफलता के साथ काम करने की कोशिश कर रहा हूं ।
i4niac

3
@AlexanderMalakhov मैं सहमत हूं, यदि आपके मेजबान ओएस की उपयोगिता है, तो इसका उपयोग करना सबसे अच्छा विकल्प है। मैंने पहले उम्मीद पर ध्यान दिया, लेकिन मेरे मामले में मुझे AWS क्लाउड में चलने वाले एक निश्चित लिनक्स वितरण पर स्क्रिप्ट को चलाना होगा। उस डिस्ट्रो को स्थापित होने की उम्मीद नहीं है और बिल्ड प्लान के हिस्से के रूप में इसे स्थापित करने के लिए मेरे पास पर्याप्त अधिकार नहीं हैं। चारों ओर देखने के बाद, सबसे अच्छा समाधान जो मुझे मिला है वह है <pre> <code> # एंड्रॉइड SDK को हेडलेस सर्वर FILTER = टूल, प्लेटफॉर्म, एंड्रॉइड -20 (स्लीप 5 &&; जबकि [1]; स्लीप 1; echo y; ) \ | Android अपडेट sdk --no-ui --all \ --filter $ {FILTER} </ code> </ pre>
i4niac

140

जैसा कि अन्य उत्तरों में बताया गया है, आप --filterस्थापित पैकेजों को सीमित करने के विकल्प का उपयोग कर सकते हैं :

android update sdk --filter ...

अन्य उत्तरों में यह उल्लेख नहीं है कि आप फ़िल्टर विकल्पों के लिए अनुक्रमित (जो बदल जाएगा) के बजाय निरंतर स्ट्रिंग पहचानकर्ताओं का उपयोग कर सकते हैं। यह अनअटेंडेड या स्क्रिप्टेड इंस्टॉल के लिए मददगार है। --filterविकल्प के लिए आदमी :

... यह भी 'सूची sdk - customended' द्वारा लौटे पहचानकर्ताओं को स्वीकार करता है।

android list sdk --all --extended :

Packages available for installation or update: 97
----------
id: 1 or "tools"
     Type: Tool
     Desc: Android SDK Tools, revision 22.6.2
----------
id: 2 or "platform-tools"
     Type: PlatformTool
     Desc: Android SDK Platform-tools, revision 19.0.1
----------
id: 3 or "build-tools-19.0.3"
     Type: BuildTool
     Desc: Android SDK Build-tools, revision 19.0.3

फिर आप स्ट्रिंग आईडी का उपयोग फिल्टर विकल्पों के रूप में कर सकते हैं ताकि आप जो संस्करण चाहते हैं उसे ठीक से बता सकें:

android update sdk --filter tools,platform-tools,build-tools-19.0.3 आदि


27
--extendedविकल्प के लिए +1 , यह स्पष्ट करता है कि CI स्क्रिप्ट के लिए क्या स्थापित किया जाए।
नहरमन

16
android update--allविकल्प की भी आवश्यकता होगी , अन्यथा उपयोग सहायता प्रदर्शित की जाती है। उदाहरण के लिए: android update sdk --no-ui --all --filter build-tools-21.1.0(और +1 उस --extendedविकल्प के लिए जो आपको उपनामों को देखने की अनुमति देता है build-tools-21.1.0)
पेट्रस रेपो

1
विकल्प --filterऔर --extendedविकल्प के लिए आदमी कहां है ?
सिरो सेंटिल्ली 郝海东 冠状 iro i 法轮功 '

2
मैं मानता हूं कि संख्या के बजाय स्ट्रिंग का उपयोग करना बेहतर है, जो तय नहीं है।
वारब्बी

1
मैं उस --extendedविकल्प की तलाश कर रहा था ताकि मैं एक स्क्रिप्ट लिख सकूं और अपने कंटीन्यूअस इंटीग्रेशन सर्वर में इसका उपयोग कर सकूं जहां यह sdk रिसोर्स को खुद रिफ्रेश कर सकता है। अच्छी टिप!
ओसायिलगन

73

संस्करण 25.2.3 (और उच्चतर) Android SDK Toolsपैकेज में नया टूल शामिल है - sdkmanager - जो कमांड लाइन से बिल्ड-टूल्स इंस्टॉल करने के इस कार्य को सरल करता है।
यह android_sdk/tools/binफ़ोल्डर में स्थित है ।

उपयोग ( प्रलेखन से ):

sdkmanager packages [options]

packagesतर्क एक SDK शैली पथ, (उदाहरण के लिए, उद्धरण में लिपटे है "build-tools;25.0.0"या "platforms;android-25")। आप कई पैकेज पथ पारित कर सकते हैं, एक स्थान के साथ अलग हो सकते हैं, लेकिन वे प्रत्येक को उद्धरण के अपने सेट में लपेटा जाना चाहिए।

उदाहरण का उपयोग (मेरे मैक पर):

alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/   
alex@mbpro:~/sdk/tools/bin$ ./sdkmanager "build-tools;25.0.2"  
done   
alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/ 25.0.2/

आप विभिन्न विकल्पों को भी निर्दिष्ट कर सकते हैं , उदाहरण के लिए HTTP ( --no_https) का उपयोग करने के लिए सभी कनेक्शनों को बाध्य करने के लिए , या प्रॉक्सी सर्वर ( --proxy_host=addressऔर --proxy_port=port) का उपयोग करने के लिए ।

उपलब्ध विकल्पों की जांच करने के लिए, --helpध्वज का उपयोग करें । मेरी मशीन (मैक) पर, आउटपुट निम्नानुसार है:

alex@mbpro:~/sdk/tools/bin$ ./sdkmanager --help
Usage: 
  sdkmanager [--uninstall] [<common args>] \
    [--package_file <package-file>] [<packages>...]
  sdkmanager --update [<common args>]
  sdkmanager --list [<common args>]

In its first form, installs, or uninstalls, or updates packages.
    <package> is a sdk-style path (e.g. "build-tools;23.0.0" or 
             "platforms;android-23").
    <package-file> is a text file where each line is a sdk-style path
                   of a package to install or uninstall.
    Multiple --package_file arguments may be specified in combination
     with explicit paths.
In its second form (with --update), currently installed packages are
    updated to the latest version.
In its third form, all installed and available packages are printed out.

Common Arguments:
    --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK containing this tool
    --channel=<channelId>: Include packages in channels up to <channelId>.
                           Common channels are:
                           0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary).

    --include_obsolete: With --list, show obsolete packages in the
                        package listing. With --update, update obsolete
                        packages as well as non-obsolete.
    --no_https: Force all connections to use http rather than https.
    --proxy=<http | socks>: Connect via a proxy of the given type.
    --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use.
    --proxy_port=<port #>: Proxy port to connect to.

* If the env var REPO_OS_OVERRIDE is set to "windows",
  "macosx", or "linux", packages will be downloaded for that OS.

1
किसी और को हो रही है Warning: Unknown argument --package_file?
ulidtko

3
@ulidtko उपयोग प्रलेखन में एक बग है। सही तरीका है बराबरी के चिन्ह को जोड़ना, जैसे --package_file=packages.txt
एलेक्स लिपोव

दुर्भाग्य से यह स्थापित करने के कार्य को सरल नहीं करता है। सभी Android प्रोग्रामर बिना GUI के लिनक्स पर अपना प्रोग्राम नहीं करते हैं। हम में से कुछ इसे विंडोज पर करते हैं और एक यूआई पसंद करते हैं जो हर दूसरे विंडोज एप्लिकेशन की तरह चलता है। यह आगे की बजाय पीछे की ओर बढ़ रहा है
AaA

2
@AaA यह कमांड लाइन से संस्थापन के कार्य को सरल करता है । ओपी ने स्पष्ट रूप से कहा कि वह एक कमांड लाइन समाधान की तलाश में है, और इसलिए आपकी टिप्पणी इस संदर्भ में अप्रासंगिक है।
एलेक्स लिपोव

55

ADB बिल्ड-टूल्स कमांड एंड्रॉइड अपडेट sdk --no-ui द्वारा स्वचालित रूप से डाउनलोड नहीं किए जाएंगे

तो बिल्ड-टूल टाइप (कंसोल में) स्थापित करने के लिए:

android list sdk --all

आइटम से पहले सूचीबद्ध संख्या को याद रखें और निम्नलिखित पर अमल करें:

android update sdk -u --all --filter <number>

आदेशों को / YourFolder / android-sdk-linux / tools में टाइप किया जाना चाहिए

दूरस्थ फ़ोल्डर के लिए भी (उदाहरण के लिए ssh द्वारा खोला गया सर्वर) प्रकार:

**./android** list sdk --all
**./android** update sdk -u --all --filter <number>

टर्मिनल में ADB संकुल प्रकार की सरल सूची के लिए:

android list sdk

सभी पैकेजों को स्थापित करने के लिए:

android update sdk --no-ui

या फिल्टर के साथ (अल्पविराम विभाजक है):

android update sdk --no-ui --filter 3,5,8,14

पुराने पदावनत sdks के लिए आपको --all का उपयोग करना चाहिए। उदाहरण के लिए एंड्रॉयड अद्यतन एसडीके --no-ui 27 स्थापित करने के लिए --filter -सभी मंच-8
अस्थायी

जब से मैं GUI का उपयोग कर रहा था SDK इंस्टॉलर क्रैश हो रहा था, मुझे कमांड-लाइन पर स्विच करना पड़ा, तो इससे वास्तव में मदद मिली। धन्यवाद।
यवोन एबुरो

32

कमांड लाइन से संबंधित एंड्रॉइड एसडीके सब कुछ स्थापित करने की कोशिश करते समय जानकारी का एक बड़ा स्रोत, यह डॉकफाइल था । डॉकरफाइल के अंदर आप देख सकते हैं कि लेखक एक ही कमांड को इंस्टॉल करता है platform toolsऔर build toolsबिना किसी अन्य इंटरैक्शन के। मामले में ओपी ने जो आदेश दिया है, वह इस आदेश के अनुकूल होगा:

echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui

अगर मुझे सभी पैकेज नहीं चाहिए तो क्या होगा ? बस 21.1.0 चाहिए
इगोरगानापोलस्की 20

@IgorGanapolsky शायद आपको --allध्वज के बिना प्रयास करना चाहिए
जियोलैंड

21

मुझे बस कुछ समय के लिए एंड्रॉइड एसडीके निर्भरता प्राप्त करने का एक कमांड लाइन के माध्यम से स्थापित किया गया था और चूंकि प्रलेखन जो कि टूल और ऑनलाइन के साथ आता है, की कमी है, मुझे लगता है कि मैंने यहां जो भी खोजा है वह पोस्ट करूंगा।

के android sdk r24.4.1लिए काम कर रहा हूं linux। दो आदेश हैं जो आप उपलब्ध पैकेजों को सूचीबद्ध करने के लिए चला सकते हैं:

android list sdk

और अधिक संपूर्ण:

android list sdk --all

विशिष्ट पैकेज के लिए पैकेज संख्या ऊपर प्रत्येक कमांड के लिए भिन्न होती है! उदाहरण के लिए, पूर्व सूचियाँ पैकेज के API 23.1 revision 3रूप में पैकेज करती हैं #3और बाद में इसे सूचीबद्ध करता है #29

अब, एंड्रॉइड कमांड का उपयोग करके इंस्टॉल करने के दो अलग-अलग तरीके हैं।

tools/android update sdk --no-ui --filter <package number>

तथा

tools/android update sdk -u -a -t <package number>

यह देखते हुए कि इंस्टॉल कमांड प्रत्येक को पैकेज # पैरामीटर के रूप में ले सकता है, आप किस पैकेज नंबर का उपयोग करते हैं? बहुत ऑनलाइन खोज और परीक्षण और त्रुटि के बाद, मुझे पता चला कि

android update sdk --no-ui --filter से पैकेज संख्याओं का उपयोग करता है android list sdk

तथा

android update sdk -u -a -t से पैकेज संख्याओं का उपयोग करता है android list sdk --all

दूसरे शब्दों में - स्थापित करने के लिए API 23.1 revision 3आप या तो कर सकते हैं:

android update sdk --no-ui --filter 3

या

android update sdk -u -a -t 29

पागल है, लेकिन यह काम करता है।


1
-aका छोटा संस्करण है --all, यही कारण है कि यह उस पैकेज नंबर का उपयोग कर रहा है। (के -uलिए कम है --no-uiऔर के -tलिए कम है --filter।)
darthmaim

मुझे विश्वास है कि Ips क्या कहता है। Google को अपने usage()पाठ को वास्तविकता के साथ अद्यतित नहीं रखने के लिए जाना जाता है।
नॉटआउट 2

पर ubuntu मैं भागा: $ इको वाई | $ ANDROID_HOME / उपकरण / Android अपडेट sdk -u -a -t-27 अब कैसे पुष्टि करें कि मैं Android 8 में अपडेट किया गया था?
आशीष करपे

$ ANDROID_HOME / उपकरण / Android सूची लक्ष्य | grep "Android पर आधारित" Android 4.0.3 (API स्तर 15) Android पर आधारित 4.1.2 (API स्तर 16) Android 4.2.2 पर आधारित (API स्तर 17) Android 4.3.1 (API स्तर 18) पर आधारित Android 4.4.2 (एपीआई स्तर 19) के आधार पर Android 4.4.2 (एपीआई स्तर 19) के आधार पर Android 5.0.1 (एपीआई स्तर 21) के आधार पर Android 5.1.1 (एपीआई स्तर 22) के आधार पर Android 6.0 (एपीआई) के आधार पर स्तर 23) एंड्रॉइड 7.0 (एपीआई स्तर 24) के आधार पर
आशीष कारपे

जब मैं भागा तो कारण: $ ANDROID_HOME / उपकरण / Android सूची स्थापना या अद्यतन के लिए उपलब्ध sdk संकुल: 1 1- एसडीके प्लेटफॉर्म एंड्रॉइड 8.1.0, एपीआई 27, संशोधन 1
आशीष करपे

20

अधिकांश उत्तर इस तथ्य को नजरअंदाज करते हुए प्रतीत होते हैं कि आपको बिना किसी सुपर उपयोगकर्ता अधिकारों के साथ अपडेट रहित वातावरण में चलाने की आवश्यकता हो सकती है, जिसका अर्थ है कि स्क्रिप्ट को सभी y/nलाइसेंस संकेतों का स्वचालित रूप से उत्तर देना होगा ।

यहाँ उदाहरण है कि चाल है।

FILTER=tool,platform,android-20,build-tools-20.0.0,android-19,android-19.0.1

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | android update sdk --no-ui --all \
    --filter ${FILTER}

कोई फर्क नहीं पड़ता कि आपको कितने संकेत मिलते हैं, उन सभी का जवाब दिया जाएगा। यह while/sleepलूप यस कमांड के सिमुलेशन जैसा दिखता है , और वास्तव में यह लगभग अच्छी तरह से है । इसके साथ समस्या yesयह है कि इससे बाढ़ आती है 'y'और उन पात्रों को भेजने में लगभग कोई देरी नहीं होती है और जिस संस्करण से मुझे निपटना था, उसमें किसी भी प्रकार का कोई समयबाह्य विकल्प नहीं था। यह "प्रदूषण" को रोक देगा और स्क्रिप्ट गलत इनपुट के बारे में शिकायत करने में विफल रहेगी। समाधान 'y'स्टडआउट को भेजने के बीच देरी करना है, और ठीक यही while/sleepकॉम्बो करता है।

expect कुछ लिनक्स डिस्ट्रो पर डिफ़ॉल्ट रूप से उपलब्ध नहीं है और मेरे पास मेरे CI स्क्रिप्ट के भाग के रूप में इसे स्थापित करने का कोई तरीका नहीं है, इसलिए सबसे सामान्य समाधान का उपयोग करना पड़ा और सरल बैश स्क्रिप्ट से अधिक सामान्य कुछ भी नहीं हो सकता है, है ना?

तथ्य की बात के रूप में, मैंने इसके बारे में ( NSBogan ) ब्लॉग किया है, यदि आप रुचि रखते हैं तो इसे और अधिक विवरण के लिए देखें।


- सभी संभव एसडीके स्थापित करेगा। आदर्श नहीं यदि आप किसी विशिष्ट फ़िल्टर को सीमित करना चाहते हैं।
इगोरगानापोलस्की 20

17

यदि आपने sdkmanagerस्थापित किया है (मैं मैक का उपयोग कर रहा हूँ)

sdkmanager --listउपलब्ध संकुल को सूचीबद्ध करने के लिए चलाएँ ।

यदि आप बिल्ड टूल इंस्टॉल करना चाहते हैं, तो उपलब्ध पैकेज की सूची से पसंदीदा संस्करण को कॉपी करें।

पसंदीदा संस्करण चलाने के लिए

sdkmanager "build-tools;27.0.3"

1
धन्यवाद। यह काम करता हैं! कमांड "एंड्रॉइड" को अब एंड्रॉइड-एसडीके के नवीनतम संस्करण के साथ हटा दिया गया है, हमें उपयोग करना है। / sdkmanager से / उपकरण / बिन निर्देशिका
JLavoie

8

हालाँकि, यह चलाने में बहुत धीमी है

हां, मुझे भी यही समस्या हुई है। फ़ाइल डाउनलोड में से कुछ बेहद धीमी हैं (या कम से कम वे पिछले कुछ दिनों में हैं)। यदि आप सब कुछ डाउनलोड करना चाहते हैं तो बहुत कुछ नहीं है जिसके बारे में आप कर सकते हैं।

नतीजा यह है कि फ़ोल्डर बिल्ड-टूल्स में कुछ भी नहीं है, और मैं चाहता हूं कि aapt और एपीकेबिल्डर है, क्योंकि मैं कमांड लाइन से एपीके के लिए एपीके का निर्माण करना चाहता हूं।

क्या आपने इसे पूरा होने दिया?

एक चीज़ जो आप कर सकते हैं वह है -tस्विच का उपयोग करके डाउनलोड किए जा रहे पैकेजों को फ़िल्टर करना ।

उदाहरण के लिए:

tools/android update sdk --no-ui -t platform-tool

जब मैंने दूसरे दिन यह कोशिश की तो मुझे बिल्ड टूल्स के संस्करण 18.0.0 मिला। किसी कारण से नवीनतम संस्करण 18.0.1 इस फ़िल्टर द्वारा शामिल नहीं है और इसे प्राप्त करने का एकमात्र तरीका --allस्विच के साथ सब कुछ स्थापित करना था ।


2
उपलब्ध फ़िल्टर प्राप्त करने के लिए इसे चलाएं: "android update sdk -h" ... एक फ़िल्टर जो निर्दिष्ट प्रकार के पैकेजों के अपडेट को कॉमा से अलग की गई सूची के रूप में [प्लेटफॉर्म, सिस्टम-इमेज, टूल, प्लेटफ़ॉर्म पर सीमित करता है] -टूल, डॉक्टर, नमूना, स्रोत]। यह 'सूची sdk --extended' द्वारा लौटे पहचानकर्ताओं को भी स्वीकार करता है।
अलेब

6

मैं एक स्क्रिप्ट रखना पसंद करता हूं जो मेरी निर्भरता स्थापित करे

कुछ इस तरह:

#!/usr/bin/env bash
#
# Install JUST the required dependencies for the project.
# May be used for ci or other team members.
#

for I in android-25 \
         build-tools-25.0.2  \
         tool \
         extra-android-m2repository \
         extra-android-support \
         extra-google-google_play_services \
         extra-google-m2repository;

 do echo y | android update sdk --no-ui --all --filter $I ; done

https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh


धन्यवाद, मुझे बहुत समय बचाने में मदद करें।
utzcoz

4

मुझे बस यह समस्या थी, इसलिए मैंने आखिरकार उपलब्ध उपकरणों की सूची को पढ़ने और पार्स करके 1 लाइन बैश गंदा समाधान लिखा:

 tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *\([0-9]\+\)\-.*/\1/')

मैंने अपनी परियोजना को सेवाओं को चलाने के लिए बंद कर दिया, इसने केवल निर्माण उपकरण की तुलना में बहुत अधिक के लाइसेंस के लिए कहा, इसलिए यह समाधान बहुत सीमित है।
nurettin

अनुक्रमणिका की तुलना में बहुत अधिक नियतात्मक लगता है जो समय के साथ बदल सकता है जैसा कि संस्करण विकसित होता है ...
ऑगस्टिन रीडिंगर

4

@ I4niac & @ Aurélien Lambert द्वारा जवाबों से प्रेरित, यह वही है जिसके साथ मैं आया था

csv_update_numbers=$(./android list sdk --all | grep 'Android SDK Build-tools' | grep -v 'Obsolete' | sed 's/\(.*\)\- A.*/\1/'|sed '/^$/d'|sed -e 's/^[ \t]*//'| tr '\n' ',')
csv_update_numbers_without_trailing_comma=${csv_update_numbers%?}

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | ./android update sdk --all -u -t $csv_update_numbers_without_trailing_comma

व्याख्या

  • android list sdk --allकमांड के परिणाम में बिल्ड टूल पैकेजों के अनुक्रमित संख्याओं की अल्पविराम से अलग सूची प्राप्त करें (अप्रचलित पैकेजों को अनदेखा करना)।
  • लाइसेंस को स्वीकार करने के लिए टर्मिनल पर हर कुछ मील के अंतर पर 'y' फेंकते रहें।

4

Developer.android.com से एंड्रॉइड एसडीके डाउनलोड करें (इसकी वर्तमान में विंडोज़ ओएस के लिए 149mb फ़ाइल है)। यह ध्यान देने योग्य है कि एंड्रॉइड ने sdkmanager GUI को हटा दिया है, लेकिन बिन फ़ोल्डर में sdkmanager का कमांड लाइन संस्करण है जो टूल फ़ोल्डर के अंदर स्थित है।

  1. बिन फ़ोल्डर के अंदर, शिफ्ट कुंजी दबाए रखें, राइट क्लिक करें, फिर यहां ओपन कमांड लाइन चुनें। यहां शिफ्ट + राइट क्लिक >> ओपन कमांड लाइन।
  2. जब कमांड लाइन खुलती है, तो sdkmanagerदर्ज करें पर क्लिक करें।
  3. फिर रन टाइप sdkmanager(स्पेस), डबल हाइफ़न ( --), टाइप लिस्ट sdkmanager --list (यह एसडीके मैनेजर के सभी पैकेजों को सूचीबद्ध करता है)
  4. Sdkmanager (स्पेस) टाइप करें, फिर पैकेज का नाम, एंटर दबाएँ। उदाहरण के लिए। sdkmanager प्लेटफ़ॉर्म-टूल (एंटर दबाएं) यह लाइसेंस समझौते को लोड करेगा। विकल्प (y / n) के साथ। स्वीकार करने के लिए y दर्ज करें और यह आपके द्वारा निर्दिष्ट पैकेज को डाउनलोड करेगा।

अधिक संदर्भ के लिए यहां आधिकारिक दस्तावेज का पालन करें

आशा है कि ये आपकी मदद करेगा। :)


4

"Android" कमांड को हटा दिया गया है।

कमांड-लाइन टूल्स के लिए, टूल / बिन / एसडीकेमैनगर और टूल्स / बिन / एव्डमैनगर का उपयोग करें

यदि आपको एंड्रॉइड स्टूडियो की आवश्यकता नहीं है, तो आप केवल अनुभाग कमांड लाइन टूल्स में developer.android.com से मूल एंड्रॉइड कमांड लाइन टूल डाउनलोड कर सकते हैं ।

सीएलआई से यह कुछ इस तरह होना चाहिए:

curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

या

wget --output-document sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

उसके बाद बस संग्रह को लक्ष्य फ़ोल्डर में अनपैक करें

unzip sdk-tools-linux.zip

और अब हम सब कुछ स्थापित कर सकते हैं जो आपको चाहिए ...

./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

आप कमांड का उपयोग करके संकुल की पूरी सूची प्राप्त कर सकते हैं ./tools/bin/sdkmanager --list

कुछ पैकेजों को लाइसेंस समझौते की स्वीकृति की आवश्यकता होती है। आप इसे अंतःक्रियात्मक रूप से स्वीकार कर सकते हैं या "y" को इनपुट स्ट्रीम में पास कर सकते हैं, इस तरह (मामले में दो समझौते):

echo -ne "y\ny" | ./tools/bin/sdkmanager --install 'system-images;android-29;default;x86_64'

और हां, अपनी सुविधा के लिए, आप ANDROID_HOME या ANDROID_SDK_ROOT (इसे ~ / .profile या ~ / .bash_profile में करने सहित) या पैच जैसे चर निर्यात कर सकते हैं । पथ चर - यह सब आपके विवेक पर है।

स्क्रिप्ट उदाहरण:

mkdir /opt/android-sdk
cd /opt/android-sdk
curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux.zip
echo -ne "y" | ./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

आवश्यकताएँ: कर्ल (या विग) और अनज़िप करें

समस्या निवारण:

यदि आप देखते हैं Warning: Could not create settings, तो आपको ANDROID_HOME (इसे इस सटीक नाम के साथ यदि आवश्यक हो तो बनाएं) के अंदर toolsनिर्देशिका होने की आवश्यकता है, तो Android कमांड लाइन टूल sdkmanager को हमेशा दिखाएं: चेतावनी: सेटिंग नहीं बना सकाcmdline-tools


2

बिल्ड टूल स्वचालित रूप से डिफ़ॉल्ट रूप से डाउनलोड नहीं किया जा सकता क्योंकि नैट ने https://stackoverflow.com/a/19416222/1104031 पोस्ट में कहा है ।

लेकिन मैंने छोटे उपकरण लिखे जो आपके लिए सब कुछ बनाते हैं

मैंने https://stackoverflow.com/a/17863931/1104031 पोस्ट में "उम्मीद" टूल का इस्तेमाल किया । आपको केवल एंड्रॉइड-एसडीके और python27, की आवश्यकता है expect

यह स्क्रिप्ट सभी बिल्ड टूल, सभी sdks और स्वचालित निर्माण के लिए आपकी जरूरत की सभी चीजों को स्थापित करेगी:

import subprocess,re,sys

w = subprocess.check_output(["android", "list", "sdk", "--all"])
lines = w.split("\n")
tools = filter(lambda x: "Build-tools" in x, lines)
filters = []
for tool in tools:
  m = re.search("^\s+([0-9]+)-", tool)
  tool_no = m.group(1)
  filters.append(tool_no)

if len(filters) == 0:
  raise Exception("Not found build tools")


filters.extend(['extra', 'platform', 'platform-tool', 'tool'])

filter = ",".join(filters)

expect= '''set timeout -1;
spawn android update sdk --no-ui --all --filter %s;
expect {
  "Do you accept the license" { exp_send "y\\r" ; exp_continue }
  eof
}''' % (filter)

print expect

ret = subprocess.call(["expect", "-c", expect])
sys.exit(ret)

कैसे के बारे में echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6?
स्कीमैक्स

1
अगर मैं गलत हूं तो मुझे सुधारो लेकिन ऐसा लगता है कि यह स्क्रिप्ट हर चीज को हर बार फिर से डाउनलोड करती है। मैंने
-यू

1

जैसा कि अन्य प्रतिक्रियाओं में कहा गया है, बिल्ड टूल को --allध्वज को स्थापित करने की आवश्यकता होती है। आप -tसभी पैकेजों को स्थापित करने से बचने के लिए फ़िल्टर फ़्लैग का बेहतर उपयोग करते हैं, लेकिन सभी बिल्ड टूल्स को फ़िल्टर करने का कोई तरीका नहीं है।

AOSP बग ट्रैकर में इन दो बिंदुओं के लिए पहले से ही सुविधाओं के अनुरोध हैं। बेझिझक उन्हें वोट दें, इससे वे किसी दिन हो सकते हैं:


1

मैंने यह सब अपडेट करने की कोशिश की, और यह काम कर गया!

echo y | $ANDROID_HOME/tools/android update sdk --no-ui

0

प्रयत्न

1. सभी संकुल सूची

android list sdk --all

2. निम्नलिखित कमांड का उपयोग करके पैकेज स्थापित करें

android update sdk -u -a -t package1, package2, package3 //comma seperated packages obtained using list command 

-1

android अपडेट sdk

यह कमांड एसडीके टूल्स, बिल्ड टूल्स, एसडीके प्लेटफॉर्म टूल्स के लिए सभी नवीनतम रिलीज को अपडेट और स्थापित करेगा।

यह मेरे लिए काम है।

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