ゲーム開発の備忘録

趣味のゲーム開発でのノウハウや、技術的に嵌ったポイントを忘れないように書き記しておくブログです。

Kotlinで書いたlibGDX利用プロジェクトをAndroid Studio 3.2でビルド時に"Cannot change attributes of configuration ':[app名]:kapt' after it has been resolved."が出力される場合の対処法

経緯

Android Studio 3.2にアップデートすると、Gradle 4.6未満のプロジェクトは扱えなくなります。私はlibGDXを利用してAndroidアプリケーションをKotlinで書いていたのですが、gdx-setup.jarによるlibGDXプロジェクトセットアップ時のデフォルトのGradleは4.4だったため、そのままではビルドできなくなりました。
そこで、Gradleを4.4から4.10にバージョンアップしたのですが、ビルド時に

"Cannot change attributes of configuration ':[app名]:kapt' after it has been resolved."

というエラーが出力され、ビルドができなくなってしまいました。
このエラーはbuild.gradleのapply plugin: "kotlin-android"を除去すると発生しなくなり、ビルドが成功しますが、そうすると実行時にActivityを有効化できない旨のエラーが吐かれます。Kotlinで書いている以上kotlin-androidは必須です。ではどうすれば良いのでしょうか?

解決策

com.android.tools.build:gradleのバージョンを3.1.3にします。
Gradle 4.6以上にアップデートする時に自動的に3.2.0がインストールされるのですが、3.2.0のままだと当該エラーが発生するようです。(エラーが発生する理由までは分かっていません……)
手動でbuild.gradleを編集し、com.android.tools.build:gradleのバージョンを3.1.3に書き換えましょう。
なお、gradle.propertiesに追加されたorg.gradle.configureondemandはcom.android.tools.build:gradleが3.2.0以上でないと利用できないため、falseを設定しておきましょう。trueのままだとビルドできません。
(※org.gradle.configureondemandはビルドを高速化するための仕組みのようなので、それが使えないのは残念ですが仕方ありません……)

ネット上に全く情報が無かったので、この結論にたどり着くまでにかなり時間がかかりました……

真の解決策(2018/11/14更新)

libGDX ver1.9.8のGitHubリポジトリから、androidプロジェクトのbuild.gradleを参照し、35行目以下を全てコピーして現在利用しているbuild.gradleに適切に上書き(ペースト)します。
すると、Gradle周りの問題はすべて解決します。