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.