🔑
Android Studioでのビルド時のジャーナルファイルロック絶対回避するマン
Android Studioでの開発中に「さてビルドして動作を確認しよう」と思ったときに
このようなログが出力された経験はないだろうか
Gradle could not start your build.
> Cannot create service of type BuildSessionActionExecutor using method LauncherServices$ToolingBuildSessionScopeServices.createActionExecutor() as there is a problem with parameter #21 of type FileSystemWatchingInformation.
> Cannot create service of type BuildLifecycleAwareVirtualFileSystem using method VirtualFileSystemServices$GradleUserHomeServices.createVirtualFileSystem() as there is a problem with parameter #7 of type GlobalCacheLocations.
> Cannot create service of type GlobalCacheLocations using method GradleUserHomeScopeServices.createGlobalCacheLocations() as there is a problem with parameter #1 of type List<GlobalCache>.
> Could not create service of type FileAccessTimeJournal using GradleUserHomeScopeServices.createFileAccessTimeJournal().
> Timeout waiting to lock journal cache (~/.gradle/caches/journal-1). It is currently in use by another Gradle instance.
Owner PID: 91509
Our PID: 91540
Owner Operation:
Our operation:
Lock file: ~/.gradle/caches/journal-1/journal-1.lock
悲しきかな。gradleのインスタンスが既に作られていたためにジャーナルファイルがロックされていたようです。
直前にターミナルで ./gradlew hoge
とタスクを実行していたり、複数のAndroid Studioを開いて別のAndroid Studioでビルドしたあとだったりしたときに直面します。
この場合の汎用的な解決策として僕はJavaのプロセスをキルしています。
killall -9 java
ビルドする直前にこのスクリプトを実行できればいついかなるときであってもジャーナルファイルロックに悩まされることはありませんよね。
ビルド前にJavaには死んでいただきます
- Run/Debug Configurations を開く
- 左上の+ボタンをクリックし、shell scriptを選択する
-
Script text
を選択し、先程のスクリプトkillall -9 java || true
を入力し、Nameは「kill java process」とでも入力しておく
- 左の設定一覧から
Android app/app
を選択し、下のほうにスクロールするとBefore launch
という項目があるので、そこの+をクリックし、Run Another Configuration
を選択し、kill java process
を追加する
-
kill java process
を先頭に移動させる
準備はこれで完了だ。
あとはいつもどおりアプリをビルドすればよい、実行前にJavaのプロセスを殺してくれるので(多分)確実にジャーナルファイルロックによるエラーは出なくなるはずだ
アプリエンジニア募集中
最後にカラビナテクノロジーではAndroid/iOSエンジニアを積極採用中なので、興味がある方は是非連絡いただけるとありがたいです
株式会社 カラビナテクノロジーは「命綱や支点を素早く確実に繋ぐカラビナ。そんなカラビナのような役割をテクノロジーで実現したい」という想いのもと、福岡で設立。 主にシステム開発・アプリ開発・ Webサイト制作を行っています。採用情報→karabiner.tech/recruit/requirements/
Discussion
すでに外部でジャーナルファイルがロックされているときしか期待した動きをすることがわかったので修正する
修正しました