woshidan's blog

そんなことよりコードにダイブ。

前回のビルドのプロセスがキャッシュファイルのロックを取っていてAndroid Studioのビルドができないとき

Android Studioでビルドをしていると、なかなかビルドが終わらずに途中でキャンセルしたり、ついAndroid Studioごと強制終了できないかなと考えて実行してしまったりします。

そうしてビルドを終了させても前回のビルドが正常に終了せず、前回のビルドのプロセスがキャッシュファイルのロックを取っていてAndroid Studioのビルドができないことがあり、その場合、下記のようなエラーが出ます。

Error:A problem occurred configuring root project 'android'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Timeout waiting to lock artifact cache (/Users/woshidan/.gradle/caches/modules-2). It is currently in use by another Gradle instance.
     Owner PID: 1234
     Our PID: 5678
     Owner Operation: resolve configuration ':classpath'
     Our operation: resolve configuration ':classpath'
     Lock file: /Users/woshidan/.gradle/caches/modules-2/modules-2.lock

このとき、やれることとしては2つで、

  • ロックを取っている前のビルドのプロセスを殺す
  • ロックを取られているファイルを削除する

になります。

ロックを取っている前のビルドのプロセスを殺す

 ps aux | grep 1234

をしてそのPIDのプロセスが確かにAndroid Studioのプロセスっぽいのを確認した後で、

kill -9 1234

ロックを取られているファイルを削除する

rm /Users/woshidan/.gradle/caches/modules-2/modules-2.lock

キャッシュのファイルがなくなるので、次のビルドはちょっと遅くなりますが、動かないよりマシでしょ、という感じです。