Android: NDK का कोई भी संस्करण अनुरोधित संस्करण से मेल नहीं खाता है


53

एंड्रॉइड ग्रैगल प्लगइन 3.6.0 (24 फरवरी, 2020 को रिलीज़) को अपडेट करने के बाद , कई प्रोजेक्ट स्वतंत्र रूप से विफल होने लगे:

No version of NDK matched the requested version 20.0.5594570. Versions available locally: 21.0.6113669

स्थानीय रूप से पुराने अपेक्षित ndk संस्करण को स्थापित करके इसे स्थानीय रूप से "ठीक" करना काफी सरल है:

sdkmanager 'ndk;20.0.5594570'

हालाँकि, मेरा प्रश्न है: यह पुराना संस्करण कहाँ और कैसे निर्दिष्ट किया गया है? और मैं इसे कैसे अपडेट करूं ताकि यह नवीनतम संस्करण से मेल खाए 21.0.6113669?


10
और निर्माण Github CI पर भी विफल रहता है।
KYHSGeekCode

मेरे लिए भी ऐसा। और अगर मैं उस ndk को स्थापित करता हूं, या उसका स्थान निर्दिष्ट करता हूं, तो मुझे मेरा एप्लिकेशन UnsatisfiedLinkError -_-
ildar ishalin

1
वर्तमान में github ci अब मेरे प्रोजेक्ट के लिए फिर से काम करती है: github.com/KYHSGeekCode/Android-Disassembler/blob/…
KYHSGeekCode

और यह सर्कल सीआई में भी विफल रहता है।
HX_unbanned

यह वैसा ही है: stackoverflow.com/questions/61157024/…
Gerry

जवाबों:


26

विकल्प 1:

आप प्रोजेक्ट स्ट्रक्चर डायलॉग में अपने स्थानीय रूप से स्थापित NDK का चयन कर सकते हैं

File > Project Structure...हॉटकी दबाकर या CTRL + ALT + SHIFT + Sखिड़कियों पर क्लिक करके आप प्रोजेक्ट स्ट्रक्चर डायलॉग को खोल सकते हैं

प्रोजेक्ट स्ट्रक्चर डायलॉग ओपन होने के बाद, SDK लोकेशन पर जाएं और Android NDK लोकेशन के तहत NDK के अपने स्थानीय रूप से इंस्टॉल किए गए संस्करण का चयन करें । आमतौर पर यह आपके उपयोगकर्ता फ़ोल्डर में कहीं स्थापित होता है तो \AppData\Local\Android\Sdk\ndk\%ndk version%कम से कम विंडोज के लिए।

प्रोजेक्ट स्ट्रक्चर डायलॉग स्क्रीनशॉट - एंड्रॉइड स्टूडियो 3.6 बिल्ड # AI-192.7142.36.36.6200805, 12 फरवरी, 2020 को बनाया गया

विकल्प 2:

विकल्प 1 करने से आपकी local.propertiesफ़ाइल आपके लिए संपादित हो जाएगी और अधिकांश मामलों में काम करेगी। लेकिन अगर आप इस आधिकारिक गाइड के अनुसार, आपके द्वारा प्रोजेक्ट बनाने वाली सभी मशीनों पर एक सुसंगत NDK संस्करण का उपयोग करना चाहते हैं , तो आप इसे अपने मॉड्यूल ग्रेड स्क्रिप्ट से कॉन्फ़िगर कर सकते हैं। बस ndkVersionअपने मॉड्यूल ग्रेड स्क्रिप्ट के android{}ब्लॉक को इस तरह जोड़ें।

android {
    ndkVersion "major.minor.build"
}

आपके द्वारा उपयोग किए जाने वाले NDK संस्करण के साथ डबलक्वाट के बीच स्ट्रिंग को प्रतिस्थापित करना

विकल्प 3:

यदि आप समान NDK संस्करण का उपयोग करने के लिए किसी विशेष मशीन पर निर्मित सभी प्रोजेक्ट चाहते हैं, तो आप ANDROID_NDK_HOMENDK फ़ोल्डर के लिए पथ के साथ पर्यावरण चर भी सेट कर सकते हैं ।


1
क्या होगा यदि मैं विकल्प 2 का उपयोग करके नवीनतम ndkVersion का उपयोग करना चाहता हूं?
KYHSGeekCode

@KYHSGeekCode आप उस एनडीके संस्करण के साथ डबलक्वाट के बीच स्ट्रिंग को बदल सकते हैं जिसका आप उपयोग करना चाहते हैं। सुनिश्चित करें कि आपके पास वह विशेष संस्करण स्थापित है।
सुबारू ताशीरो

5
मेरा मतलब है, क्या मैं नवीनतम संस्करण का उपयोग कर सकता हूं (मैन्युअल रूप से निर्दिष्ट नहीं कर रहा हूं) ?, कुछ का उपयोग करके$NDK_LATEST_VERSION
KYHSGeekCode

20

मैं इसमें भी दौड़ता हूं

NDK का कोई भी संस्करण अनुरोधित संस्करण 20.0.5594570 से मेल नहीं खाता है। संस्करण स्थानीय रूप से उपलब्ध: 21.0.6113669

विकल्प 1:

आप प्रोजेक्ट संरचना डायलॉग कार्यों में बस अपने स्थानीय रूप से स्थापित NDK का चयन कर सकते हैं ! यहाँ छवि विवरण दर्ज करें

लेकिन केवल स्थानीय बिल्ड के लिए मान्य है, मुझे CI के लिए समाधान की आवश्यकता है

विकल्प 2:

यह केवल तभी काम करता है, जब आप इसे हर प्रयुक्त मॉड्यूल में निर्दिष्ट करते हैं

android {
    compileSdkVersion 28
    ndkVersion "21.0.6113669"
    ...
}

यहाँ यह काम नहीं लगता है https://github.com/hannesa2/panoramagl/pull/17/checks इस बदलाव के साथ https://github.com/hannesa2/panoramagl/pull/17/files/diff-cff4e8c294a5d5576768686ee1ddc6R6

विकल्प 3:

export ANDROID_NDK_HOME=/Users/{my-user}/Development/adt/sdk/ndk/21.0.6113669

काम भी करता है!


क्या आप विकल्प 2 से मतलब नहीं है सब पर काम नहीं कर रहा है? उस दृष्टिकोण के साथ क्या समस्या आ रही है? क्या आपने इस पृष्ठ के निचले भाग पर एक नज़र डाला है? developer.android.com/studio/projects/...
सुबारू Tashiro

@SubaruTashiro देखो, यह github.com/marianmoldovan/panoramagl/pull/17/… काम करने के लिए नहीं लगता है इस परिवर्तन के साथ github.com/marianmoldovan/panoramagl/pull/17/… या मुझे पता नहीं क्यों
hannes ach

अजीब। मैं आपके कमिट में देख सकता हूं कि आपने निर्दिष्ट किया था 21.0.6113669लेकिन बिल्ड लॉग कहता है कि अनुरोधित संस्करण है 20.0.5594570। क्या आप किसी ndk_locator_record.jsonफ़ाइल की तलाश कर सकते हैं ? उस फ़ाइल में जानकारी है कि उसने अनुरोधित ndk संस्करण को कैसे हल किया।
सुबारू ताशीरो

@SubaruTashiro मैं इसके लिए खोज करता हूं, और ऐसी कोई फ़ाइल नहीं है। देखो मैं इसके लिए कदम में खोज करता हूं "ndk_locator_record.json के लिए खोज" github.com/hannesa2/panoramagl/pull/17/…
6 अगस्त को शाम

स्वचालन उपकरण के लिए विकल्प 3 महान है, धन्यवाद!
वायलेट जिराफ

14

मेरे साथ भी वही दिक्कत है। मैंने एसडीके उपकरण के तहत एसडीके प्रबंधक के माध्यम से इसे हल किया, क्लिक करें Show Package Detailsऔर फिर एनडीके (साइड बाय साइड) के नीचे स्क्रॉल करें और उस संस्करण को टिक करें जिसे आपको जरूरत है। नीचे चित्र देखें:

एनडीके संस्करण स्थापित करने के लिए एसडीके उपकरण के लिए छवि लिंक

किसी के लिए मेरा सवाल है, हमें उन परियोजनाओं के लिए अब इसकी आवश्यकता क्यों है जो एनडीके की आवश्यकता नहीं है? जैसा कि यह पता चला है कि जिस परियोजना पर मैं निर्भरता के लिए काम करता हूं उसमें एनडीके पहले से मौजूद आवश्यकता है!


2

अपने classpath संस्करण को अपने बिल्ड.ग्रेडल, प्रोजेक्ट स्तर के अंदर 3.5.0 में बदलें।

dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
}

मेरे पास एक ही मुद्दा है और यह हल हो गया।


3
खैर, यह वास्तव में एक समाधान नहीं है, लेकिन सबसे अच्छा एक समाधान है। मैं पहले से ही उल्लेख किया है कि त्रुटि हो रहा शुरू कर दिया अद्यतन करने के लिए 3.6.0(बाद में या)। Btw, आपको डाउनग्रेड करने की आवश्यकता नहीं है 3.5.0। संस्करण भी 3.5.3ठीक काम करता है।
फ्राइडेरब्लुमेले

2

मेरे पास एक ही समस्या थी, थोड़ी देर बाद मुझे एक अस्थायी समाधान मिला। ndkफ़ोल्डर का नाम बदलें ndk-bundle। अपनी परियोजनाओं में local.propertiesफाइल करने और इस लाइन को जोड़ने से पहले जाएं sdk.dir:

ndk.dir=<path to your ndk folder>

यह मेरा है:

ndk.dir=G\:\\SDK\\ndk-bundle
sdk.dir=G\:\\SDK

मुझे आशा है कि यह आपकी मदद करेगा


अच्छा लगा। यह काम। क्या आप किसी भी तरह से जानते हैं कि बिल्ड सिस्टम इस लाइन को स्वचालित रूप से उत्पन्न कर सकता है क्योंकि यह पहले से ही sdk.dir विकल्प के लिए कर सकता है?
निकोलस डसर्ट

आप नाम बदलने के बजाय ndk फ़ोल्डर में पथ निर्दिष्ट कर सकते हैं। स्ट्रिंग ndk.dir=G\:\\...\\Sdk\\ndk\\21.0.6113669ने मेरे लिए काम किया।
अर्टेम मोस्टेएव

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