のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

AndroidSDKのビルド・デプロイ周りでぶつかったエラーを供養する

はじめに

先日、会社で新しいプロダクトの理解を深める過程で「せっかくだからプロダクトについての事前情報一切なしでプロダクトを把握する能力をつけよう」というスパルタ企画が開始した。 このようなプロダクトに関する情報が一切ないケースは実際あると地獄だろうが、今回やってみて大変だったが同時に自信もついてビルドが通ったときはいつもの倍嬉しかった!

という訳でその過程で出会ったエラーたちについて供養していこうと思う。 プロダクトはAndroidSDKとAndroidアプリである。

エラー1

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project *******.
> NDK not configured. 
  Download it with SDK manager.)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

NDKがないため発生しているエラー。エラーとしては単純だがそもそもAndroid初めての人にはNDKってなに?という感じで色々と大変だった。

ちなみにNDKとは?…ざっくりいうとC,C++で実装されたモジュールのことを指す。これらはCMAKEを使ってコンパイルする。

developer.android.com

エラー1 対応

NDKをインストールする。 どうやってインストールするか?? →Android Studio経由でインストールする。 [場所] メニューバー [Android Studio] -> Preferences -> System Settings > Android SDK -> [SDK Tools] タブ そうすると以下のような画面にたどりつく。 ここで、写真の用にチェックが入っていない=インストールされていないということなのでチェックをいれ、[Apply]をクリックするとインストールが始まる。

インストールが終わったら画面を閉じ、今度以下の場所へ移動する。 [場所] メニューバー [File] -> Project Structure -> SDK Location そうすると以下のようにNDKが設定されていないので、プルダウンメニューを開くと、Default NDKが選択できるようになっている。

f:id:lukefone-story:20191028212747p:plain
Project Structure - SDK Location

もしここでdefault NDKが表示されない場合は、右の[...]をクリックして直接NDKの場所を指定すれば良い。

これで、当該エラーについては解決されるはずである。

エラー2

ERROR: No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android
This version of the NDK may be incompatible with the Android Gradle plugin version 3.0 or older.
Please use plugin version 3.1 or newer.

もしかしたら、エラー1を解決後このエラーに悩まされるかもしれない。私はそうだった。 このエラーが出やすい環境は比較的古いプロジェクトになる。 メッセージの通りとあるファイルが見つからないのでGradleのバージョンを上げるよう警告が出ている。

エラー2対策

この手の対策は、ケースにもよるが基本的にはバージョンは変更しないほうが良い。 特にGradleのようなビルドツールにバージョンが記載してあり、それに従っているならばなおのこと、それは「あえて古いバージョンを使用している」のである。 ではどうするか、mipsel-linux-android*****というファイルがないのが原因なようなのでそれを持っているNDKをインストールすれば良い。

どのNDKバージョンにすればよいか?

→以下isuueに記載があるが、このmipsel-linux-android*****はr17以降廃止になったらしい、つまりそれ以前のNDKバージョンをエラー1のSDK Toolsの画面にもう一度行きインストールする。

github.com

あの画面の下側にはShow Package Detailとチェックボックスがあり、それをチェックするとインストールバージョンが選択できるようになる。

f:id:lukefone-story:20191028212702p:plain
SDK Tools インストールバージョン指定
エラー1の対処で最新がおそらく入っているので、それはチェックを入れたまま、バージョン:16.1.4479499をチェックしてインストールする。 インストール後、エラー1と同様にProject Structure -> SDK Locationで使用するNDKの場所を選択する。

これで、当該エラーについては解決されるはずである。

エラー3

CMake Error: Could not create named generator Android Gradle 

エラー3対策

このエラーは以下によると、CMakeのバージョンを変更するとうまく行った例があるそうなのでバージョンを変更したところうまく行った。

github.com

CMakeのバージョン変更のやり方はこれまでと同様に、SDK ToolsでCMakeの任意のバージョンをインストールする。 (自分はもともと3.10.2.がインストールされていたので、チェックを外してアンインストールし、より古い3.6.の方をインストールして試してみた。)

以上がとりあえず出たエラーだった。(実はいくつか未解決もあるがビルドには問題なかった) 深い部分は理解できていないが、ビルドにバージョン関係のエラーはつきものなのでどういう部分を調査するべきか学ぶことができたと思う。