Android:要求されたバージョンに一致するNDKのバージョンはありません


56

Android Gradleプラグイン 3.6.0(2020年2月24日リリース)に更新した後、いくつかのプロジェクトが独立して失敗し始めました。

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
ANDビルドもGithub CIで失敗します。
KYHSGeekCode

わたしも。私はNDKをインストールするか、その場所を指定した場合と、私は私のアプリが原因-_-ないUnsatisfiedLinkErrorの墜落取得
イルダルをishalin

1
現在、githubのciは今、私のプロジェクトのために再び動作します:github.com/KYHSGeekCode/Android-Disassembler/blob/...
KYHSGeekCode

また、Circle CIでも失敗します。
HX_unbanned

回答:


29

オプション1:

プロジェクト構造ダイアログでローカルにインストールされたNDKを選択するだけです。

クリックするFile > Project Structure...か、ホットキーCTRL + ALT + SHIFT + S(Windowsの場合)を押すと、プロジェクト構造ダイアログを開くことができます。

プロジェクト構造ダイアログが開いたら、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バージョンを使用したい場合は、モジュールグラドルスクリプトから構成できます。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検索してみましたが、そのようなファイルはありません。私はステップでそれを検索「の前にndk_locator_record.jsonの検索」を見てgithub.com/hannesa2/panoramagl/pull/17/...
ACHハンネスを

オプション3は、自動化ツールに最適です。
バイオレットキリン

14

同じ問題があります。[SDKツール]の下のSDKマネージャーで解決し、[ Show Package DetailsNDK(サイドバイサイド)]をクリックしてスクロールし、必要なバージョンにチェックを入れて適用します。下の画像を参照してください。

NDKバージョンインストール用のSDKツールへの画像リンク

誰もが私の質問ですが、NDKを必要としないプロジェクトでなぜこれが必要なのでしょうか。結局のところ、NDKは私が依存関係について取り組んでいるプロジェクトの既存の要件です!


2

プロジェクトレベルのbuild.gradle内でクラスパスバージョンを3.5.0に変更します。

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

私は同じ問題を抱えていて解決しました。


3
まあ、それは本当にソリューションではありませんが、せいぜい回避策です。(またはそれ以降)に更新すると、エラーが発生し始めたことを既に述べました3.6.0。ところで、にダウングレードする必要はありません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.