Gradle sync failed: Already disposed: Module: の対処方法

2019年7月26日

Androidアプリケーション「東京周辺マップ」では、TileViewというライブラリを使用しています。この度、ver 4.0が出ていたので対応することにしました。テストでは難なく対応できたのですが、本プロジェクトに組み込むと

Gradle sync failed: Already disposed: Module: 'TokyoMapNTN-tileview’ (1 m 1 s 831 ms)

というエラーが同期動作で出てしまう現象が発生しました。

ライブラリの取り込みの方法をいろいろ試したのですが解決しないため、検索してみると、以下の方法で解決できることが分かりました。

(プロジェクトのフォルダ)/.idea/modules.xml
(プロジェクトのフォルダ)/xxxxx.iml (xxxxxはプロジェクトにより異なる)

上に示した2つのファイルを削除します。そして、再度同期します。

これでライブラリは認識されました。ただ、最初の検索のヒットで「.idea」フォルダを削除するといったのがありましたが、これをやるとプロジェクトが壊れました。注意してください。

この後、ビルドが通ってエミュレーターを起動すると

/LoadedApk: Unable to instantiate appComponentFactory java.lang.ClassNotFoundException

が出ました。この場合は、以下のフォルダを削除して解決しました。(※バックアップは忘れずに)

(プロジェクトのフォルダ)/.gradle
(プロジェクトのフォルダ)/app/build

すんなりと行くことは、Androidの開発においてはないようです。

でも、本当にこのような対処法しかないのでしょうか。これが正当な方法だとしたら、Android Studioの未熟さがさらに露呈することになると思うのですが。