【GMS】Lint found errors in the project; aborting build【またおまえか】


GameMakerStudio 1.4 のアップデータを適用後、Android 用バイナリを出力したらエラーが出るようになった。

最近アップデートすると毎回泥出力はエラー出す印象、そして毎回原因は Lint なんだぜ? ま た お ま え か …。


前前回のアップデートにはバグも含まれていたため泥出力ができなくなっただけでなく、YoYoRunnner も動かなくなったためこれらは自力で治すのがクソ面倒くさかった。結局 YoYoRunner は廃止される見込みで、それ以来 Gmail 経由でアプリを端末に送信してインストールしている。そもそも USB ポート無い端末もあるんだよね。

で、今回もアップデートしたら Lint Error が発生。泥 Fire(アマゾンFire)に対応するため色々仕様を弄ってるっぽいのだけど……エラーが出るのはなんでなんや……。

エラーメッセージを見ると致命的なのは Lint 設定部分。他にも多数 Warning は出ているがこちらは気にしなくても良いっぽい。

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':xxx.xxxx.xxhdpi_testapps:lint'.
> Lint found errors in the project; aborting build.

Fix the issues identified by lint, or add the following to your build script to proceed with errors:
...
android {
    lintOptions {
        abortOnError false
    }
}

CompileForm でコンパイラのログを見ても分かるが、アンドロイド用のビルドに Gradle というビルド用ツールが利用されている。

GMS にバンドルされている Gradle 関連のファイルは
C:\Users\ユーザ名\AppData\Roaming\GameMaker-Studio\Android\runner\gradle
Windows7 ならこの辺りにある。

エラー内容から見ると設定に何か不備があるっぽく、build.gradle の lintOptions を適切なものに変えれば良さそうだが、build.gradle が上記フォルダに添付されているわけでもないため、じゃあ GMS だとどこを触れば直せるのか検討がつかない。とりあえず先に Android SDK を最新にしてみることに。

SDK のアップデート

Android-SDK を SDK マネージャ使って最新にアップデートする。

個人的にクソ遅いので嫌いなアップデート。ダウンロード中、ログに Download finished with wrong checksum が出る場合は SDK マネージャが溜めたキャッシュをクリアか、Android SDK Manager.exe があるディレクトリに temp フォルダが作られてないか確認。temp フォルダがあって中にパッケージが入っている場合、その中身をばっさり削除。

SDK Manager は Tools → Settings の Force https://...sources to be fetched using http:// にチェックが入っているかも確認。これは https ではなく http 経由でダウンロードさせるオプションだが、チェック入れてもやっぱ根本的に遅いものは遅い。

wrong checksum で何度トライしても失敗する場合、それ以上再試行してもだいたい無駄なので直リンクから zip をダウンロードしてきて、それを Android SDK Manager.exe と同じ場所に temp という名前でフォルダを作ってから、そこにダウンロードしてきたパッケージを放り込み、SDK マネージャにはその temp からアップデートさせる方法がある。

今回も前回もトラブル発生したため、この方法で問題を起こしてる部分を個別に手動アップデートした。面倒だけどこの方法ならばダウンロードで失敗することは無い。

Android SDK Direct Download Links

Android SDK | “Tools” Direct Links

Android SDK | “Android 6.0” Package Direct Links

ちな、上記 URL のダウンロードリンクは最新を保証しないため、ダウンロードしたけど細かいリビジョンが最新と違う場合があります。sysimg_atv_arm-23_r03 が欲しいけど リンクは sysimg_atv_arm-23_r02 だったり。この場合、手動でダウンロードするファイル名を変えて対応すること。

修正前
http://dl-ssl.google.com/android/repository/sys-img/android-tv/sysimg_atv_arm-23_r02.zip

修正後
http://dl-ssl.google.com/android/repository/sys-img/android-tv/sysimg_atv_arm-23_r03.zip

SDK マネージャ経由で遅いのは純粋に一個一個パッケージのファイルサイズがでかい(各 200 〜 500 MB程度)以外に、ダウンロードしたパッケージを解凍してインストールしてといった作業が伴うため。

SDK を最新にアップデートしたら、次に GMS を起動。コンパイルする前に GMS が貯めているキャッシュを必ず消す。GMS のキャッシュはビルドの際に悪さをすることが多く、特にアンドロイド用出力では毎回キャッシュを消したほうがいい。

しかし今回はこれでも直らなかった。はて……

トラブルシュートへ

YoYoGames の Knowledge Base を検索してみた。

Gradle について少し記述はあったが、解決策は載ってない。フォーラムにも lint 関連は過去にいくつか話題が出ているが簡単に直る方法があるか探してみる。

参考:GameMaker: Studio Android (SDK and NDK setup)

参考:General Changes To The Android Target – EA 1.99.460+

参考:App no longer builds on 1.4.1675

キャッシュにコンパイル時のログが残っていることが分かった。より詳細なログがあればエラーの追跡が可能になる。

\cache\アプリ名\Android\Default\アプリ名\build\outputs

前述した build.gradle もキャッシュには残っていた。

上記参考スレッドの回答で GGS から Android 設定の MIN SDK を 11 にしたらどうかという提案については、実行したがこれだけでは効果無かった。変更前は 9 だったものを 11 にして、キャッシュの build.gradle から設定を確認したが MIN SDK 11 に変更はされている………しかし動作は改善しない。

しかしログを見ながら気がついたのだが、そうか、ターゲットも変えるべきか。いままでかなり低めを設定してあったので

Target SDK 16
Min SDK 9
Compile SDK 16
Build Tools 23.0.1
SupportLib 23.1.1

こうなっていた。これを

Target SDK 22
Min SDK 11
Compile SDK 23
Build Tools 23.0.1
SupportLib 23.1.1

これでまずビルド成功。ではどの辺りが問題なのか、設定をすこし詰めてみた。ただし Build Tools と SupportLib には触らないまま。

Target SDK 19
Min SDK 11
Compile SDK 19

上記はコンパイル失敗、Lint エラー。

Target SDK 20
Min SDK 11
Compile SDK 20

これもエラー、ただしエラーログを見たら単にインストールしてあった SDK バージョンに該当が無かっただけ。

Target SDK 21
Min SDK 11
Compile SDK 21

上記もだめ。Lint エラー。ということは 22 以上ならエラーが出ないという事か?

Target SDK 21
Min SDK 11
Compile SDK 22

上記もだめ。Lint エラー。

Target SDK 22
Min SDK 11
Compile SDK 21

上記もだめ。lint エラー。

Target SDK 22
Min SDK 11
Compile SDK 22

上記もだめ。lint エラー。ということは 22 以上ではなく 23 以上が必要で、23 以上が必要なのは Compile SDK の方か?

Target SDK 19
Min SDK 11
Compile SDK 23

上記は成功。Build Tools のバージョンと Compile SDK の一致が必要なのか、Target SDK は低くても問題無いみたい。

まとめ

Lint found errors in the project; aborting build というエラーが出た場合、SDK などを最新にした上で、Global Game Settings(GGS)から Android に関する設定を変更。

Target SDK 19
Min SDK 11
Compile SDK 23

この設定で筆者の場合は Android/Fire でコンパイルが成功するようになった。Android/YYC のコンパイルも同時に成功するようになった。

問題解決!
設定項目の更新が必要ならちゃんと書いておいてくれたまえ!>YoYo


Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です