सभी एसडीके लाइसेंस को स्वचालित रूप से स्वीकार करें


441

एंड्रॉइड प्लगइन्स 2.2-अल्फा 4 के बाद से :

ग्रैड लापता एसडीके संकुल को डाउनलोड करने का प्रयास करेगा जो एक परियोजना पर निर्भर करता है

जो आश्चर्यजनक रूप से शांत है और इसे जेकहार्टन परियोजना के रूप में जाना जाता है

लेकिन, आपको एसडीके लाइब्रेरी को डाउनलोड करने के लिए: लाइसेंस समझौतों को स्वीकार करना होगा या ग्रेडेल आपको बताता है:

आपने निम्नलिखित एसडीके घटकों के लाइसेंस समझौतों को स्वीकार नहीं किया है: [एंड्रॉइड एसडीके बिल्ड-टूल्स 24, एंड्रॉइड एसडीके प्लेटफॉर्म 24]। अपनी परियोजना के निर्माण से पहले, आपको लाइसेंस समझौतों को स्वीकार करने और एंड्रॉइड स्टूडियो एसडीके प्रबंधक का उपयोग करके लापता घटकों की स्थापना को पूरा करने की आवश्यकता है। वैकल्पिक रूप से, लाइसेंस समझौतों को एक कार्य केंद्र से दूसरे में स्थानांतरित करने का तरीका जानने के लिए, http://d.android.com/r/studio-ui/export-licenses.html पर जाएं।

और यह एक समस्या है क्योंकि मैं एक करते समय सभी एसडीके निर्भरता स्थापित करना पसंद करूंगा gradle build

मैं सभी लाइसेंसों को स्वचालित रूप से स्वीकार करने के लिए एक समाधान की तलाश कर रहा हूं। हो सकता है कि एक स्क्रिप्ट हो? आपके पास कोई विचार है ?

धन्यवाद!

[संपादित करें]

एक समाधान निष्पादित करना था:

android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository

और इसे मैन्युअल रूप से इंस्टॉल करें, लेकिन इसे करने के लिए ग्रेडेल का नया फीचर उद्देश्य है।

[संपादित २]

एक बेहतर समाधान sdkmananger का उपयोग करना है:

yes | sdkmanager --licenses

12
आप echo y |लाइसेंस स्वीकार करने के लिए उस आदेश के सामने पॉप भी कर सकते हैं । उपयोगी जब एक सिर रहित सीआई बॉक्स पर चल रहा है :)
डोरी

3
मुझे करना पड़ा ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryक्योंकि androidउपकरण मेरे घर पर स्थानीय था
जैक्सनक्रा

7
sdkmanager - अब काम नहीं करता है। मैंने उपयोग किया - नवीनीकरण, त्रुटियों को अनदेखा किया और इसने लाइसेंस समस्याओं को हल किया।
१२:०५ पर jcsubmit

6
मैंने सीआई वातावरण के लिए इस कमांड का उपयोग छोटे समायोजन के साथ स्क्रिप्ट निर्माण में किया है। मैंने जोड़ा है --sdk_root = $ ANDROID_SDK_PATH। समस्या यह थी कि लाइसेंस को एंड्रॉइड एसडीके रूट फ़ोल्डर में स्वीकार नहीं किया गया था और सहेजा नहीं गया था। अंतिम आदेश: हाँ | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (sudo के बिना)
adi9090

3
यकीन है कि निर्धारित किया है करने के लिए किया जा $ANDROID_SDK_PATHवास्तविक रूट पथ जहां एसडीके स्थापित किया है (यानी: करने के लिए /opt/android-sdk), या बस सीधे पथ डाल (यानी: yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
जीएमसी

जवाबों:


365

AndroidSDK अंत में लाइसेंस स्वीकार कर सकता है।

yes | sdkmanager --licenses

संपादित करें:

जैसा कि @MoOx, macOS पर टिप्पणियों में बताया गया है, आप कर सकते हैं

yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

जैसा कि विंडोज पर @pho, @mikebridge और @ Noitidart द्वारा टिप्पणियों में बताया गया है, आप कर सकते हैं

cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"

पहले जावा स्थापित करना सुनिश्चित करें


4
विधवाओं पर मुझे फिर रन के लिए जाना पड़ा, C:\Users\x1\AppData\Local\Android\sdk\tools\androidफिर इसने एक जीयूआई खोला और फिर लापता स्थापित किया और फिर नए डायलॉग में "स्वीकारें स्वीकारें" पर क्लिक करें।
Noitidart

8
यह लिनक्स के लिए काम नहीं कर रहा है। उपकरण / बिन dir या कहीं और के तहत कोई sdkmanager फ़ाइल नहीं है। क्या आप मदद कर सकते हैं?
मेहम

36
MacOS पर, आप कर सकते हैंyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx

5
मैं ग्रेडल रैपर से स्वचालित रूप से लाइसेंस कैसे स्वीकार कर सकता हूं?
हावर्ड स्वॉप

7
मार्ग के लिए @Noitidart तक बढ़ा, लेकिन यह काम नहीं किया, मुझे C: \ Users \ X1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager - कमांड प्रॉम्प्ट से प्राप्त करना और "y" चलाना था। "" संकेतों में दर्ज करें
गणेश टीटी

177

मैंने इसका alpha5पूर्वावलोकन के साथ सामना किया है ।

जेक व्हार्टन ने मुझे बताया कि आप वर्तमान में उपयोग कर सकते हैं

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

$ANDROID_HOME/licenseआप मशीन पर वर्तमान फ़ोल्डर को फिर से बनाने के लिए । यह त्रुटि संदेश ( http://tools.android.com/tech-docs/new-build-system/license ) के लिंक में उल्लिखित प्रक्रिया के समान परिणाम होगा ।

हैश लाइसेंस पाठ के sha1s हैं, जो मुझे लगता है कि समय-समय पर अद्यतन किया जाएगा, इसलिए यह कोड केवल इतने लंबे समय तक काम करेगा :)

और इसे मैन्युअल रूप से इंस्टॉल करें, लेकिन इसे करने के लिए ग्रेडेल का नया फीचर उद्देश्य है।

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

मुझे लगता है कि आधिकारिक उपकरण कानूनी कारणों से इस कदम को छोड़ना नहीं चाहेंगे।

रिलीज नोट्स को फिर से जारी करना यह बताता है

एसडीके ऑटो-डाउनलोड: ग्रेडले गायब एसडीके पैकेज को डाउनलोड करने का प्रयास करेगा जो एक परियोजना पर निर्भर करता है।

इसका मतलब यह नहीं है कि यह काम करेगा यदि आपने अभी तक एंड्रॉइड टूल इंस्टॉल नहीं किए हैं और पहले से ही नवीनतम लाइसेंस (ओं) को स्वीकार कर चुके हैं।

EDIT: यह कहते हुए कि, यह तब तक मेरे टेस्ट gubuntu बॉक्स पर काम नहीं करता है जब तक कि मैं SDK को एएस से लिंक नहीं करता। सीआई हालांकि ठीक काम करता है - निश्चित नहीं कि अंतर क्या है ...


कुछ घटकों के संबंध में sdkDownload सुविधा में एक छोटी सी गड़बड़ है, उदाहरण के लिए, समर्थन- v4। यह घटकों को अद्यतन करेगा , लेकिन अगले आमंत्रण तक अपडाउन अपडेट को नहीं देखेगा। एक दो बार करने के लिए, एक बार फेंकने के लिए एक बार फिर से हटाने के लिए वैकल्पिक हल: ढाल निर्भरता || सच - code.google.com/p/android/issues/detail?id=212309
जो बोबीबेर

6
आप उपयोग कर सकते हैं mkdir -pके बजाय || true
ओल्डगॉड

यह इस गड़बड़ के लिए धन्यवाद, अच्छा काम करता है। यह जाँचने के लिए कि आपका SDK पथ अपेक्षित के रूप में परिभाषित किया गया है: गूंज $ ANDROID_SDK
tryp

मेरे वातावरण में ANDROID_SDK परिभाषित नहीं है, लेकिन यह ANDROID_HOME
दिमित्री एल।

5
@stack_ved: मैं बस एक और जोड़ दिया है echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"। लेकिन मुझे लगता है कि आपकी समस्या कहीं और छिप जाती है।
पॉल

132

नवीनतम एंड्रॉइड स्टूडियो के लिए (2.3) सभी लाइसेंस को अपडेट / स्वीकार करने का सबसे अच्छा तरीका है:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

आपको अभी भी अपने सेटअप के आधार पर लाइसेंस फ़ाइलों को अन्य स्थानों पर कॉपी करने की आवश्यकता हो सकती है।


यह जाने के लिए सबसे अच्छा तरीका है और यह सभी प्लेटफार्मों पर भी काम करता है, बस चलाएंtools/bin/sdkmanager --licenses
jnv

यदि आप पुराने sdk प्रबंधक मिला - अभ्यस्त काम नहीं है। टूल फ़ोल्डर को किसी अन्य स्थान पर कॉपी करना आवश्यक है - फिर --sdk_root = का उपयोग करें और इसे अपने एसडीके फ़ोल्डर में इंगित करें, फिर आप टूल को नए संस्करण में अपडेट करने में सक्षम होंगे।
मिरेक माइकल

क्या हम yesस्वचालित निर्माण प्रणालियों के लिए किसी तरह इस कमांड में पाइप कर सकते हैं? आपके पास इन मशीनों तक हमेशा इंटरैक्टिव कंसोल नहीं पहुंचेगा, इसलिए yकीबोर्ड पर दबाव डालने से शारीरिक रूप से काम नहीं होगा।
void.pointer

क्या कोई कृपया मुझे बता सकता है कि इस समाधान को कैसे लागू किया जाए? इस लाइन को build.sh में जोड़ना है?
stack_ved

1
इसने मेरे लिए काम किया लेकिन मुझे cd $ANDROID_HOMEइस कमांड को अंजाम देने से पहले करना पड़ा
इनस साहा

57

नई sdkmanagerउपयोगिता के लिए:

yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

Yesses के बीच थोड़ी देरी है, इसलिए कमांड थोड़ी देर के लिए लाइसेंस दिखाने के साथ लटका सकता है, लेकिन इसके लिए मानव हस्तक्षेप की आवश्यकता नहीं है।


मेरे स्थापित डेबियन 9 में मेरे पास केवल एक sdkmanager.jar है: android-sdk-linux / tools / lib / sdkmanager.jar और # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar त्रुटि: उपकरण निर्देशिका संपत्ति सेट नहीं है, कृपया सुनिश्चित करें कि आप android
user3313834

1
यह इस धारणा पर आधारित है कि आपने एसडीके टूल्स को Google से एक आर्काइव के रूप में डाउनलोड किया और उन्हें $ ANDROID_HOME
A. Rager

यह सबसे up-to-dateउत्तर लगता है । लगता --licensesहै अब मौजूद नहीं है। नोट: उपलब्ध कराए जा सकने वाले संभावित संस्करणों की सूची देखने के लिए:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An

2
संकेत के लिए धन्यवाद। मैंने yes | android-sdk-linux/tools/bin/sdkmanager --licenses || trueअपने CI में उपयोग करना समाप्त कर दिया ।
iSWORD

es | $ ANDROID_HOME / उपकरण / बिन / sdkmanager "बिल्ड-टूल्स; 28.0.3" -> मेरे लिए काम किए गए संस्करण को बदलना। धन्यवाद !
ishab acharya

43

यदि आप जेनकिन्स का उपयोग कर रहे हैं, तो आप बिल्ड प्रक्रिया में पहले चरण के रूप में निम्नलिखित बैश स्क्रिप्ट का उपयोग कर सकते हैं:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

यह निश्चित रूप से सभी उपलब्ध अपडेट को स्थापित करेगा, लेकिन यह आपको कुछ समय बचाएगा यदि आप डिस्क स्थान को छोड़ सकते हैं। नींद स्थापना कार्यक्रम में टूटी हुई रीडलाइन से बचने के लिए है, क्योंकि "हां" इस मामले में ठीक से काम नहीं करता है।

संपादित करें: यदि आप SDK प्रबंधक में निर्मित उपयोग कर रहे हैं, तो सही $ ANDROID_HOME प्राप्त करने के लिए आपको बिल्ड चरण में "इंस्टॉल एंड्रॉइड प्रोजेक्ट पूर्वापेक्षाएँ" प्लगइन को भी जोड़ना होगा।


मैं अपने जेनकींस बिल्ड में "कॉर्डोबा प्लेटफॉर्म एंड्रॉइड" से पहले अपनी कोड की लाइन जोड़ता हूं, जो उबंटू पर चल रहा है, लेकिन अभी भी निम्न त्रुटि हो रही है: 7 वीं त्रुटि में बनाया गया त्रुटि: / var / lib / jenkins / कार्यक्षेत्र / qa -global_php / प्लेटफार्मों / एंड्रॉइड / gradlew : बाहर निकलने के कोड के साथ कमांड विफल हो गई 1 त्रुटि आउटपुट: विफलता: अपवाद के साथ बिल्ड विफल। * क्या गलत हुआ: रूट प्रोजेक्ट 'एंड्रॉइड' को कॉन्फ़िगर करने में एक समस्या हुई। > आपने निम्नलिखित एसडीके घटकों के लाइसेंस समझौतों को स्वीकार नहीं किया है:
आशीष करपे

[Android एसडीके बिल्ड-टूल्स 26.0.2]। अपनी परियोजना के निर्माण से पहले, आपको लाइसेंस समझौतों को स्वीकार करने और एंड्रॉइड स्टूडियो एसडीके प्रबंधक का उपयोग करके लापता घटकों की स्थापना को पूरा करने की आवश्यकता है।
आशीष करपे

32

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

ओपी निर्देशों के अनुसार, यह निम्नानुसार है।

$ ./gradlew build

 
इस निर्माण के लिए JVM सेटिंग्स का सम्मान करने के लिए एक नया JVM कांटा जाएगा। कृपया डेमॉन का उपयोग करने पर विचार करें: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html।

विफलता: बिल्ड अपवाद के साथ विफल हुआ।

* क्या गलत हुआ:
प्रोजेक्ट ': ऐप' को कॉन्फ़िगर करने में एक समस्या हुई।
> आपने निम्नलिखित एसडीके घटकों के लाइसेंस समझौतों को स्वीकार नहीं किया है:
  [Android एसडीके बिल्ड-टूल्स 24.0.2]।

...
निर्माण विफल

नोट: 2017-04-16

androidउपकरण अब नए के पक्ष में पदावनत किया गया है sdkmanager। कृपया मार्च (2017) और उसके बाद से जो लॉसन के उत्तर और बाद के पोस्ट देखें।

फिर आपको निम्नानुसार कमांड समायोजित करें:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
स्रोत ताज़ा करें:
  Https://dl.google.com/android/repository/addons_list-2.xml प्राप्त करना
  XML को मान्य करें
  पार्स एक्सएमएल
  सफलतापूर्वक ऐड-ऑन सूची प्राप्त की गई
  सूत्रों को ताज़ा करें
  फ़ेचिंग URL: https://dl.google.com/android/repository/repository-11.xml
  मान्य XML: https://dl.google.com/android/repository/repository-11.xml
  पार्स एक्सएमएल: https://dl.google.com/android/repository/repository-11.xml
...
त्रुटि: अज्ञात पैकेज फिल्टर को अनदेखा करना 'बिल्ड-टूल्स -24.0.2'
-------------------------------
लाइसेंस आईडी: android-sdk-लाइसेंस-xxxxxxxx
के द्वारा उपयोग: 
 - एसडीके प्लेटफार्म एंड्रॉइड 7.0, एपीआई 24, संशोधन 2
  - एंड्रॉयड सपोर्ट रिपॉजिटरी, रिविजन 39
-------------------------------

...

२० नवंबर २०१५
क्या आप लाइसेंस 'android-sdk-license-xxxxxxxx' [y / n]: y को स्वीकार करते हैं

अभिलेखागार स्थापित करना:
  अभिलेखागार स्थापित करने की तैयारी की जा रही है
  एसडीके प्लेटफार्म एंड्रॉइड 7.0, एपीआई 24, संशोधन 2 डाउनलोड करना
  एसडीके प्लेटफार्म एंड्रॉइड 7.0, एपीआई 24, संशोधन 2 को स्थापित करना
    SDK प्लेटफ़ॉर्म Android 7.0, API 24, संशोधन 296%) स्थापित
  एंड्रॉइड सपोर्ट रिपॉजिटरी डाउनलोड करना, संशोधन 39
  एंड्रॉइड सपोर्ट रिपॉजिटरी स्थापित करना, संशोधन 39
    Android समर्थन रिपॉजिटरी स्थापित, संशोधन 3999%)
  किया हुआ। 2 पैकेज स्थापित।

इसे फिर से चलाना, फिर भी ग्रेडल को खुश नहीं करना है। इसलिए मैन्युअल स्वीकृति ही एकमात्र उपाय है जब तक कि कोई व्यक्ति कुछ बेहतर नहीं करता। (कृपया कीजिए!)


1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryकमांड प्रॉम्प्ट के माध्यम से इसे चलाना व्यवस्थापक के साथ त्रुटि को ठीक करता है। मैं
फोनगैप

32

इससे मेरी त्रुटि हल हो गई

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"

2
कुछ पात्रों को बचाने के लिए, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"वही काम करता है।
Flimzy

31

हमने जेनकिंस पर परियोजना के निर्माण में एक ही मुद्दा पाया। निर्माण के साथ buildToolsVersion '25.0.2', हमें लाइसेंस स्वीकार करना चाहिए। हमारे मामले में, हमें चलाने की आवश्यकता है:

yes | sdkmanager --update वह स्वयं sdkmanager के लिए लाइसेंस स्वीकार करता है, और फिर

yes | sdkmanager --licenses पहले स्वीकार नहीं किए गए नए लाइसेंस स्वीकार करता है

याद रखें: इन कमानों को उसी उपयोगकर्ता के साथ चलाएं जो jenkinsकरता है। हमारे डेबियन में, जेनकिंस उपयोगकर्ता बस है jenkins। दूसरे शब्दों में: जैसा rootकि स्वीकार किए गए लाइसेंस बनाएंगे root, वैसे ही जेनकींस उन्हें नहीं पढ़ेंगे।

वैसे, हमने पाया sdkmanagerपर /var/lib/jenkins/tools/android-sdk/tools/bin। अगर तुम्हारा नहीं है, तो इसे पा लोfind / -name "sdkmanager"


2
इसने मेरे मामले में भी इस मुद्दे को हल किया (डॉकटर में जेनकिंस के साथ उपकरण 26.0.x का निर्माण करें)। धन्यवाद!
जिओरडनो

1
दुर्भाग्य से इसमें प्रश्न का "स्वचालित रूप से" हिस्सा शामिल नहीं है।
m0skit0

@ m0skit0 आपकी टिप्पणी के लिए धन्यवाद! मैंने पिछले संस्करण की विशेषता के साथ मेल खाने के सवाल को मानव हस्तक्षेप के बिना सभी लाइसेंसों को स्वचालित रूप से स्वीकार करने के लिए अद्यतन किया है।
Roc Boronat

24

androidटूल बहिष्कृत किया जाता है और आप का उपयोग करना चाहिए sdkmanagerबजाय। sdkmanagerजब आप पहली बार इसे स्वीकार करते हैं तो लाइसेंस फ़ाइल भी लिखता है। लाइसेंस बदलता है जिसके आधार पर आप एसडीके का उपयोग कर रहे हैं, भले ही कमांड

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

कुछ सिस्टम पर काम करता है। यह सब पर काम नहीं करेगा। कुछ SDK फ़ाइल में एक नई लाइन के बिना लाइसेंस फ़ाइल को समाप्त करने की अपेक्षा करते हैं, इसलिए -nगूंज कमांड में जोड़ने का प्रयास करें ।

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

यदि वह काम नहीं कर रहा है तो आप इसके बजाय बेस 64 एन्कोडिंग का उपयोग करने का प्रयास कर सकते हैं।

तो मेरा लाइसेंस खोजने के लिए:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

यह आपको लाइसेंस स्वीकार करने के लिए संकेत देगा। इसे स्वीकार करने के बाद मैं इसे कॉपी कर लूंगा ${ANDROID_HOME}/licenses/android-sdk-license। यह सुनिश्चित करने के लिए कि आपको हमेशा वही लिखा जाता है जो उपयोग किया जाता है base64

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

तब आप base64 -dफ़ाइल को फिर से बना सकते हैं।

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

आप यह सत्यापित कर सकते हैं कि क्या लिखा गया फ़ाइल उस पर sha1sum चलाकर अपेक्षित है।

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249

19

यदि आप चलाते हैं yes | sdkmanager --licenses, तो हम सामग्री प्रिंट करते हैं $ANDROID_HOME/licenses/android-sdk-license,

हम इसे प्राप्त करेंगे

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

GitLab CI के लिए, Android SDK Build-Tools 26.0.2 लाइसेंस स्वीकार करने के लिए, आपको इसे चलाने की आवश्यकता है

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license

आप दूसरी प्रतिध्वनि कर रहे हैं वही जा रहा $ANDROID_HOME/licenses/android-sdk-licenseहै यह इरादा है? अर्थात। अपील
रयान आर

1
@RRR, हाँ, दूसरी प्रतिध्वनि है, Android SDK Build-Tools 26.02एक नया लाइसेंस sha1 स्ट्रिंग जोड़ा
jk2K

मैं बिटबकेट पाइपलाइनों का उपयोग कर रहा हूं, लेकिन यह अवधारणा GitLab CI के समान है। आपके जवाब से मुझे पूरी प्रक्रिया को बेहतर तरीके से समझने में मदद मिली। धन्यवाद!
दोपहर

@ निश्चित रूप से मैं भी Bitbucket पाइपलाइनों का उपयोग कर रहा हूं और जब हमने Build-Tools 26.0.2और हमारे बिल्ड को अपग्रेड किया तो खुद को यहां पाया । मेरा अंत समाधान बस करना था yes | sdkmanager --licenses। किसी echoएस की जरूरत नहीं है और यह भविष्य का प्रमाण है।
रयान आर

@Ryan आपका मतलब है कि मैं सिर्फ 'हां' जोड़ सकता हूं sdkmanager - 'पाइपलाइन के लिए' लिंक? वह महान होगा!
परिधि

16

ध्यान दें कि इस प्रश्न पर आने वाले किसी भी व्यक्ति के लिए, बिल्ड-टूल्स-24.0.2 है (मुझे लगता है) अब अप्रचलित माना जाता है, इसलिए आपको मिलेगा:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

विभिन्न कमांडों को चलाने के लिए जब उन्हें स्थापित करने का सुझाव दिया गया है।

समाधान जोड़ना है --all:

android update sdk --no-ui --all --filter "build-tools-24.0.2"

इसके अलावा अगर आप 32 बिट लाइन पर हैं , तो टूल 23.0.1 के बाद सब कुछ केवल 64 बिट है , इसलिए नहीं चलेगा। 32bit उपयोगकर्ता 23.0.1 पर अटके हुए हैं, बाद के निर्माण उपकरण प्राप्त करने का एकमात्र तरीका 64 बिट पर स्विच करना है।


1
हाँ, बिल्ड-टूल्स बस से टकरा रहे थे 25.0.1
not2qubit

1
आपका समाधान केवल एक चीज थी जिसे मैं बिल्ड-टूल्स -25 और
ग्रेड

14

यदि आप उपयोग करते tools/bin/sdkmanager --licensesहैं, तब भी आपके पास एक मानवीय संपर्क होना चाहिए। मुझे अपने gitlab CI का उपयोग करने में समस्या है। यह मेरा समाधान है:

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y अगर कोई प्रश्न है तो हाँ कहेंगे, लेकिन आपको प्रति इंस्टाल पैकेज एक पंक्ति बनाने की आवश्यकता है


अभी भी कई महीनों के बाद काफी प्रासंगिक है। धन्यवाद। आपने मेरा दिन बचाया :)
प्रसन्ना रामास्वामी

यह मेरे लिए उपयोगी था,
sebasira

13

आप भी निष्पादित कर सकते हैं:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

और विंडोज में, निष्पादित करें:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses

11

SDK एपीआई संख्या 25 के बारे में एक त्रुटि संदेश के लिए:

android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository


10

2018 के अनुसार इस समय किसी के लिए भी ठीक है। उपरोक्त उत्तर मेरे लिए बिल्कुल भी कारगर नहीं थे। DID का काम Android SDK खोल रहा था - टूल बार पर DOWNLOAD बटन पर क्लिक करने और उचित पैकेजों का चयन करने का। जब वे डाउनलोड करना समाप्त कर लेते हैं, तो यह आपको लाइसेंस समझौते को स्वीकार करने देगा।

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


7

मैं स्वीकार लाइसेंस फ़ाइलों के साथ एक सार्वजनिक गिट रेपो बनाकर इस समस्या को हल किया। फिर मैं wgetइन लाइसेंसों को किसी भी मशीन पर लाने के लिए उपयोग करता हूं, जिसे चलाने से पहले मुझे एक [sdk-dir] / लाइसेंस निर्देशिका की आवश्यकता होती है। अपना प्रोजेक्ट बनाने के लिए .gradlew


6

कमांड लाइन एसडीके के साथ समस्या वाले लोगों के लिए, इसका कारण यह नहीं होगा कि आपके द्वारा स्वीकार किए गए लाइसेंस हैं क्योंकि वे एक अलग स्थान पर लिखे गए हैं $ANDROID_HOME/licenses, जहां से उन्हें होना चाहिए।

मैंने पाया कि सबसे आसान उपाय लाइसेंस को इस तरह स्वीकार करना था:

$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME

नोट: यह मान लिया गया है कि आपने ANDROID_HOMEजहाँ भी अपना sdk स्थापित किया है, उसे इंगित करना है।



6

विंडोज़ के लिए, cmd खोलें और binकमांड चलाकर डायरेक्टरी में प्रवेश करें :

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

फिर sdkmanager --licensesकमांड चलाते हैं , यह लाइसेंस स्वीकार करने के लिए कहता है।


1
धन्यवाद यह वही है जो मैंने किया है
mynameisjohnj

मुझे मिलता हैError: Unknown argument --licenses
deanwilliammills

4

मैं अंत में विंडोज पर एक समाधान पाया, एक असली मूक और स्वचालित स्थापित करने के लिए:

Windows पर, निम्न सिंटैक्स काम नहीं करता है:

echo y | sdkmanager --licenses

ऐसा लगता है कि "y" को बैच में बुलाए गए जावा प्रोग्राम में सही ढंग से नहीं भेजा गया है।

वर्कअराउंड फ़ाइल फ़ाइल- y.txt को कई "y", एक लाइन के साथ, और उपयोग करने के लिए बनाना है

call sdkmanager --licenses < file-y.txt

यह लाइसेंस निर्देशिका में आवश्यक फ़ाइलों को बनाएगा। यह समस्या संभवतः जावा में बफ़ररएडर के उपयोग से संबंधित है


3

संपूर्ण लाइसेंस / डायरेक्टरी को कॉपी करें और उसे एंड्रॉइड एसडीके होम डायरेक्टरी में उस मशीन पर पेस्ट करें जहां आप अपनी परियोजनाओं का निर्माण करना चाहते हैं।

https://developer.android.com/studio/intro/update.html#download-with-gradle

इससे मेरे लिए समस्या हल हो गई


3

विंडोज पॉवरशेल में, आप कर सकते हैं

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

यह बहुत अधिक लचीला है और इसके लिए शून्य मैनुअल हस्तक्षेप की आवश्यकता है। 30 संख्या मनमानी है, लाइसेंस स्वीकृति की संख्या को कवर करने के लिए पर्याप्त होना चाहिए, लेकिन यदि आवश्यक हो तो बढ़ाया जा सकता है


फिर भी विंडोज का उपयोग नहीं करने का एक और कारण।
m0skit0

3

कॉर्डोवा का उपयोग करते समय मेरे पास एक ही त्रुटि थी।

समस्या इस तथ्य के कारण थी कि मैंने एंड्रॉइड स्टूडियो के माध्यम से और aptसाथ में एंड्रॉइड एसडीके स्थापित किया था apt install android-sdk adb। और कॉर्डोवा aptमेरे घर निर्देशिका में फ़ाइलों के बजाय स्थापित फ़ाइलों को कॉल कर रहा था ।

एक बार जब मैंने एसडीके को रास्ता बदल दिया तो उसने काम किया:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

फिर मैंने उन सिस्टम फ़ाइलों को हटा दिया, जिनका अब उपयोग नहीं किया गया था apt remove android-sdk adb:।


3

यहाँ मेरा डॉकर सेटअप है।
आप एक सादे लिनक्स वातावरण से पालन कर सकते हैं।

ध्यान दें yes |और --licenses --sdk_root=${ANDROID_HOME}खंड।
ऐसा लगता है कि यह sdkmanager --updateसमझौते का सम्मान करता है, इसलिए yes |दो बार दिखाई दिया।

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application

"ऐसा लगता है कि sdkmanager - ड्यूपलेट रिवर्ट एग्रीमेंट्स, इसलिए हाँ | दो बार दिखाई देता है।" वाह, तुम सही हो। यह बहुत निराशाजनक है लेकिन अच्छी खोज है।
cephus

2

आप निम्नलिखित आदेश को निष्पादित करके सभी लाइसेंस स्वीकार कर सकते हैं:

 sdkmanager --licenses

यह आपको प्रत्येक लाइसेंस के माध्यम से संकेत देगा, जिसे आपने अभी तक स्वीकार नहीं किया है और आप बस yउनमें से प्रत्येक को स्वीकार करने के लिए प्रवेश कर सकते हैं।


"स्वचालित रूप से"
m0skit0

2

मैंने विंडोज़ 10 मशीन पर उपरोक्त सभी कमांड की कोशिश की, लेकिन समाधान लापता संस्करणों के साथ लाइसेंस खरीदने और स्वीकार करने के लिए SDKMANAGER का उपयोग करना था।

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


सीएमडी आदेशों में से किसी ने भी मेरे लिए काम नहीं किया, केवल यह समाधान। धन्यवाद
deanwilliammills

2

इस पथ को हाल के संस्करणों में बदल दिया गया है। ./sdkmanagerअब अंदर है /Library/Android/sdk/cmdline-tools/latest/binऔर फिर बस करो

./sdkmanager --licenses

2

नोट: यह केवल मैक उपयोगकर्ताओं के लिए है

मेरे पास एक ही मुद्दा था लेकिन पोस्ट किए गए किसी भी उत्तर में मदद नहीं मिली क्योंकि कोई toolsफ़ोल्डर मौजूद नहीं था Library/Android/sdk.(मैं मैक ओएस 10.1.4.4 पर एंड्रॉइड 3.6.3 का उपयोग कर रहा हूं)

त्रुटि स्क्रीनशॉट

नीचे दिए गए कदमों ने मुझे लाइसेंस संबंधी समस्या को दूर करने में मदद की:

  1. खुला हुआ Android Studio
  2. प्रेस करें cmd + shift + A। यह Actionsपॉप-अप विंडो खोलता है ।
  3. खोजने के लिए SDK Managerऔर हिट दर्ज करें खोलने के लिए।
  4. यह पॉप-अप के लिए खुलता है Android SDK। पहले से स्थापित एक के अलावा Android के कुछ अन्य संस्करण का चयन करें। (मेरे मामले में एंड्रॉइड 10.0 पहले से इंस्टॉल था इसलिए मैंने एंड्रॉइड 9.0 का चयन किया)
  5. फिर Applyबटन का चयन करें। यह इसी SDK को स्थापित करेगा।

समाधान

  1. अब अपना ऐप चलाएं इसे बिना किसी अपवाद के काम करना चाहिए।

सफलता स्क्रीनशॉट


अरे, यह मेरा लिनक्समिंट 19.3
गैरीपी

1

मै भागा

#react-native run-android 

टर्मिनल से और उस समस्या को पूरा किया। मैन्युअल रूप से, Android Studio पर जाएं -> Android SDK -> SDK प्लेटफ़ॉर्म शो पैकेज पर क्लिक करें विस्तार और जाँच करें:

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

पैकेज स्थापित करते समय, स्वीकार करें लाइसेंस => समस्या को हल कर सकते हैं।


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