Android: ไม่มี NDK รุ่นที่ตรงกับรุ่นที่ร้องขอ


54

หลังจากอัปเดตเป็นปลั๊กอิน Android Gradle 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/
......

และมันก็ล้มเหลวใน Circle CI ด้วย
HX_unbanned

นี่เป็นเช่นเดียวกับ: stackoverflow.com/questions/61157024/…
Gerry

คำตอบ:


27

ตัวเลือกที่ 1:

คุณสามารถเลือก NDK ที่ติดตั้งในเครื่องของคุณในกล่องโต้ตอบโครงสร้างโครงการ

คุณสามารถเปิดไดอะล็อกโครงสร้างโครงการได้โดยคลิกFile > Project Structure...หรือกดปุ่มลัดCTRL + ALT + SHIFT + S(บนหน้าต่าง)

เมื่อโครงสร้างโครงการโต้ตอบที่เปิดไปที่SDK สถานที่ตั้งและเลือกรุ่นของคุณติดตั้งภายในของ NDK ภายใต้Android NDK สถานที่ตั้ง โดยทั่วไปแล้วจะติดตั้งที่ใดที่หนึ่งในโฟลเดอร์ผู้ใช้ของคุณ\AppData\Local\Android\Sdk\ndk\%ndk version%อย่างน้อยก็สำหรับ Windows

ภาพหน้าจอกล่องโต้ตอบโครงสร้างโครงการ - จาก Android Studio 3.6 Build # AI-192.7142.36.36.6200805 สร้างเมื่อวันที่ 12 กุมภาพันธ์ 2020

ตัวเลือก 2:

การทำตัวเลือกที่ 1 จะแก้ไขlocal.propertiesไฟล์ให้คุณและจะทำงานในกรณีส่วนใหญ่ แต่ถ้าคุณต้องการใช้รุ่น NDK ที่สอดคล้องกับทุกเครื่องที่คุณสร้างโครงการด้วยตามคู่มืออย่างเป็นทางการนี้คุณสามารถกำหนดค่าได้จากโมดูลสคริปต์ Gradle ของโมดูล เพียงเพิ่มndkVersionในandroid{}บล็อกของโมดูลสคริปต์ Gradle ของคุณเช่นนั้น

android {
    ndkVersion "major.minor.build"
}

แทนที่สตริงระหว่าง doublequotes ด้วย NDK เวอร์ชั่นที่คุณต้องการใช้

ตัวเลือก 3:

หากคุณต้องการให้โครงการทั้งหมดที่สร้างขึ้นบนเครื่องเฉพาะใช้รุ่น NDK เดียวกันคุณยังสามารถตั้งค่าANDROID_NDK_HOMEตัวแปรสภาพแวดล้อมด้วยพา ธ ไปยังโฟลเดอร์ NDK


1
ถ้าฉันต้องการใช้ ndkVersion ล่าสุดโดยใช้ตัวเลือก 2
KYHSGeekCode

@KYHSGeekCode คุณสามารถแทนที่สตริงระหว่าง doublequotes ด้วย NDK เวอร์ชั่นที่คุณต้องการใช้ ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งเวอร์ชันนั้น ๆ
Subaru Tashiro

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

ตัวเลือก 3:

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

ทำงานเกินไป!


คุณหมายถึงอะไรโดยตัวเลือก 2 ไม่ทำงานเลย? คุณประสบปัญหาอะไรกับวิธีการนั้น คุณดูที่ด้านล่างของหน้านี้หรือไม่? developer.android.com/studio/projects/…
Subaru 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 ที่ร้องขอ
Subaru Tashiro

@SubaruTashiro ฉันค้นหาและไม่มีไฟล์ดังกล่าว ดูฉันค้นหาในขั้นตอน "ค้นหา ndk_locator_record.json ก่อน" github.com/hannesa2/panoramagl/pull/17/…
hannes ach

ตัวเลือก 3 นั้นยอดเยี่ยมสำหรับเครื่องมืออัตโนมัติขอบคุณ!
Violet Giraffe

14

ฉันมีปัญหาเดียวกัน ฉันแก้ไขผ่านผู้จัดการ SDK ภายใต้เครื่องมือ SDK คลิกShow Package Detailsแล้วเลื่อนภายใต้ NDK (เคียงข้างกัน) และทำเครื่องหมายและใช้รุ่นที่คุณต้องการ ดูภาพด้านล่าง:

ลิงก์รูปภาพไปยังเครื่องมือ SDK สำหรับการติดตั้งรุ่น NDK

คำถามของฉันสำหรับทุกคนคือทำไมเราต้องใช้ตอนนี้สำหรับโครงการที่ไม่ต้องการ NDK เนื่องจากปรากฎว่า NDK เป็นข้อกำหนดที่มีอยู่แล้วในโครงการที่ฉันทำงานเพื่อการพึ่งพา!


2

เปลี่ยน classpath เวอร์ชันของคุณเป็น 3.5.0 ภายใน build.gradle ระดับโปรเจ็กต์ของคุณ

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

ฉันมีปัญหาเดียวกันและแก้ไขได้


3
มันไม่ใช่ทางออก แต่เป็นวิธีการแก้ปัญหาที่ดีที่สุด ฉันได้กล่าวแล้วว่าข้อผิดพลาดเริ่มเกิดขึ้นเมื่ออัปเดตเป็น3.6.0(หรือใหม่กว่า) Btw 3.5.0คุณไม่จำเป็นต้องปรับลด เวอร์ชันใช้3.5.3งานได้ดีเช่นกัน
friederbluemle

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?
Nicolas Dusart

คุณยังสามารถระบุพา ธ ไปยังโฟลเดอร์ ndk แทนการเปลี่ยนชื่อ สายndk.dir=G\:\\...\\Sdk\\ndk\\21.0.6113669ทำงานให้ฉัน
Artem Mostyaev

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.