Android : 요청 된 버전과 일치하는 NDK 버전이 없습니다.


54

2020 년 2 월 24 일에 출시 된 Android Gradle 플러그인으로 업데이트 한 후 3.6.0여러 프로젝트가 독립적으로 실패하기 시작했습니다.

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에서도 AND 빌드가 실패합니다.
KYHSGeekCode

나도 마찬가지야 그리고 그 ndk를 설치하거나 위치를 지정하면 UnsatisfiedLinkError -_-
ildar ishalin

1
현재 github ci가 내 프로젝트에서 다시 작동합니다 : github.com/KYHSGeekCode/Android-Disassembler/blob/…
KYHSGeekCode

그리고 Circle CI에서도 실패합니다.
HX_3

답변:


27

옵션 1:

프로젝트 구조 대화 상자 에서 로컬로 설치된 NDK를 간단히 선택할 수 있습니다

File > Project Structure...에서 핫키 를 클릭 하거나 눌러 프로젝트 구조 대화 상자를 열 수 있습니다.CTRL + ALT + SHIFT + S

프로젝트 구조 대화 상자가 열리면 SDK 위치 로 이동하여 Android NDK 위치 에서 로컬로 설치된 NDK 버전을 선택하십시오 . 일반적으로 이것은 사용자 폴더 어딘가에 설치 \AppData\Local\Android\Sdk\ndk\%ndk version%되고 최소한 Windows의 경우 설치됩니다.

2020 년 2 월 12 일에 빌드 된 Android Studio 3.6 빌드 # AI-192.7142.36.36.6200805의 프로젝트 구조 대화 상자 스크린 샷

옵션 2 :

옵션 1을 수행하면 local.properties파일 이 편집 되며 대부분의 경우 작동합니다. 그러나이 공식 가이드 에 따라 프로젝트를 빌드하는 모든 머신에서 일관된 NDK 버전을 사용하려면 모듈 gradle 스크립트에서 구성 할 수 있습니다. 간단히 ndkVersion모듈 gradle 스크립트 android{}블록 에를 추가하십시오 .

android {
    ndkVersion "major.minor.build"
}

큰 따옴표 사이의 문자열을 사용하려는 NDK 버전으로 바꿉니다.

옵션 3 :

특정 머신에서 빌드 된 모든 프로젝트가 동일한 NDK 버전을 사용 ANDROID_NDK_HOME하도록하려면 NDK 폴더 경로로 환경 변수를 설정할 수도 있습니다 .


1
옵션 2를 사용하여 최신 ndkVersion을 사용하려면 어떻게합니까?
KYHSGeekCode

@KYHSGeekCode는 큰 따옴표 사이의 문자열을 사용하려는 NDK 버전으로 바꿀 수 있습니다. 특정 버전이 설치되어 있는지 확인하십시오.
스바루 타시로

5
내 말은, 내가 좋아하는 뭔가를 사용하여?, 최신 버전 (수동으로 지정되지 않음)를 사용할 수 있습니다$NDK_LATEST_VERSION
KYHSGeekCode

20

나도 이것에 부딪친 다

요청한 버전 20.0.5594570과 일치하는 NDK 버전이 없습니다. 로컬에서 사용 가능한 버전 : 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-cff4e8c294a5dc5e76308662ae1ddcacR6-R7

옵션 3 :

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

너무 작동합니다!


옵션 2가 전혀 작동하지 않는다는 것은 무엇을 의미합니까? 그 접근법에 어떤 문제가 있습니까? 이 페이지의 하단을 살펴 보셨습니까? developer.android.com/studio/projects/…
스바루 타시로

@SubaruTashiro 봐, 그것은 작업에없는 것 같다 github.com/marianmoldovan/panoramagl/pull/17/... 이 변화와 github.com/marianmoldovan/panoramagl/pull/17/... 또는 내가 알고하지 않는 이유
한스 ACH

이상한. 커밋에서 지정한 것을 알 수 21.0.6113669있지만 빌드 로그에 요청한 버전이 20.0.5594570입니다. ndk_locator_record.json파일 을 찾을 수 있습니까 ? 이 파일에는 요청 된 ndk 버전을 확인한 방법에 대한 정보가 있습니다.
스바루 타시로

@SubaruTashiro 검색했는데 해당 파일이 없습니다. github.com/hannesa2/panoramagl/pull/17/… 단계에서 검색 하십시오
hannes ach

옵션 3은 자동화 도구에 유용합니다. 감사합니다!
바이올렛 기린

14

나는 같은 문제가 있습니다. SDK 도구에서 SDK 관리자를 통해 문제를 해결 Show Package Details한 다음 NDK (나란히) 아래를 스크롤하고 필요한 버전을 선택하고 적용합니다. 아래 이미지를보십시오 :

NDK 버전 설치용 SDK 도구에 대한 이미지 링크

누구에게나 내 질문은 NDK가 필요없는 프로젝트에 왜 이것이 필요합니까? NDK는 의존성을 위해 노력하는 프로젝트의 기존 요구 사항입니다.


2

build.gradle, 프로젝트 레벨에서 클래스 경로 버전을 3.5.0으로 변경하십시오.

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 옵션에서와 같이 빌드 시스템이이 행을 자동으로 생성 할 수있는 방법을 알고 있습니까?
니콜라스 뒤 사르

이름을 바꾸는 대신 ndk 폴더의 경로를 지정할 수도 있습니다. 끈 ndk.dir=G\:\\...\\Sdk\\ndk\\21.0.6113669이 나를 위해 일했습니다.
Artem Mostyaev

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.