Sitemap

Android のビルド時に No version of NDK matched the requested version *** Versions available locally: *** というエラーが出る場合の理由と対処

Nov 11, 2020

わさびーふです。

Android Gradle plugin のバージョンアップした時などに手元の PC では 発生しないのに CircleCI や GitHub Actions 上で発生するこのエラーです。

Flutter でアプリを作っていたとしても、Android のビルド時に発生します。

Press enter or click to view image in full size
Error on Github Actions

No version of NDK matched the requested version 2***.0.6***3669. Versions available locally: 2***.3.6528***47

このエラーです。ざっくり説明していくと

「2***.0.6***3669 を NDK のバージョンとして指定しているが、ビルド環境では 2***.3.6528***47 じゃないとだめだよ」

といった内容です。

NDK の指定もしていないし、NDK を使うようなコードも書いてなかったとしてもこれは発生します。

理由

今回は Android Gradle Plugin 4.0.0 を使っていました。

buildscript {
ext.kotlin_version = '1.4.10'
repositories {
google()
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:4.0.0' // ★
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

Android Gradle Plugin のバージョンによって NDK のデフォルトが指定されているので、自分で build.gradle に設定していない限りは、以下の図に対応したバージョンのインストールが必要となります。
ここには書いていないマイナーバージョンによってデフォルトが違います。

Press enter or click to view image in full size

※歴史的には Android Gradle Plugin 3.5 から NDK side by side として仕組みが変わり複数のバージョンをインストールできるようになりました。

手元の PC で Android SDK Manager でインストール済みの NDK を確認してみると、2***.0.6***3669 (21.0.6113669) がインストール済みだったので発生していませんが。。

Press enter or click to view image in full size

GitHub Actions の ubuntu-latest (Ubuntu 18.04.5 LTS) では以下のリンクからインストール済みの環境を確認すると 21.3.6528147 がインストールされていることがわかりました。

Press enter or click to view image in full size

エラーに書いてあった Versions available locally: 2***.3.6528***47 と一致しますね。
※ 実際には GitHub Actions はここに書かれたバージョン以外もインストールされていることがあります。

対処

対処方法は以下の二通りです。

Android Gradle Plugin のバージョンをそのビルド環境で用意されている NDK に合わせる

GitHub Actions はこれでいけました。

buildscript {
ext.kotlin_version = '1.4.10'
repositories {
google()
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.0' // ★
...
}
}

デフォルト設定に任せるのではなく、build.gradle に設定を書く

NDK に Android Gradle Plugin を合わせるのは本末転倒な気もしますし、こういった環境依存のバージョンを指定するのもいい気分ではないですが、以下のように設定することもできます。

android {
ndkVersion "21.3.6528147" // 執筆時点のバージョン
}

あとがき

スタートアップに投資できるくらいのお金持ちになりたい

--

--

wasabeef
wasabeef

Written by wasabeef

Google Developers Expert for Android. #shibuya_apk

No responses yet