Skip to content

React Native Gradleエラー「Could not move temporary workspace」の解決方法

問題の概要

React NativeプロジェクトでAndroidビルドを実行すると、以下のエラーが発生するケースがあります:

java.io.UncheckedIOException: Could not move temporary workspace (C:\...\dependencies-accessors\423f0288...-a4bfdb9a...) to immutable location (C:\...\dependencies-accessors\423f0288...)

このエラーは、Gradleがビルドプロセス中に一時作業ディレクトリを永続的な場所に移動できないときに発生します。特に以下の環境で頻繁に報告されています:

  • Gradle 8.6〜8.8を使用している場合
  • Windows環境で開発している場合
  • React Native 0.74以降のプロジェクト

./gradlew clean の実行やGradleバージョンのアップグレードでも解決しないケースが多く、プロジェクトのビルドが完全にブロックされる深刻な問題です。

推奨解決方法(Gradleバージョンの変更)

Gradleを8.6から8.5にダウングレードする

最も効果的で多くのユーザーが成功している方法です:

手順

  1. android/gradle/wrapper/gradle-wrapper.properties ファイルを開く
  2. distributionUrl を8.5に変更
properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip
  1. プロジェクト内の.gradleディレクトリを削除
bash
rm -rf android/.gradle
  1. クリーンビルドを実行
bash
cd android
./gradlew clean
cd ..
npx react-native run-android

Gradle 8.11.1を使用する方法(2024年9月以降)

2024年後半にリリースされたGradle 8.11.1ではこの問題が修正されています:

properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip

WARNING

Gradle 8.11.1は新しいバージョンのため、プロジェクトの他の依存関係との互換性を確認してください

その他の効果的解決策

包括的なキャッシュ削除と再ビルド

bash
# node_modulesとロックファイルを削除
rm -rf node_modules
rm yarn.lock # または package-lock.json
rm -rf android/.gradle

# 依存関係再インストール
yarn install # または npm install

# Gradleプロセス停止
cd android
./gradlew --stop

# クリーンビルド実行
./gradlew clean

# React Nativeビルド再開
cd ..
npx react-native run-android

開発サーバー(Metro)の競合解決

開発サーバーとビルドプロセスの競合が原因の場合:

  1. Metroサーバーを起動しているターミナルを閉じる
  2. 再度ビルドを実行:
bash
npx react-native run-android
  1. Metroサーバーは自動的にバンドラとして起動

プロジェクト構造の初期化(IntelliJ/Android Studioユーザー向け)

IDE関連の問題が原因の場合:

bash
# プロジェクトからIDE関連ファイルを削除
rm -rf .idea
rm -rf .gradle

# Gradleラッパー再初期化(Gradle 8.5インストール済みの場合)
gradle wrapper --gradle-version 8.5

# IDEを再起動してプロジェクトを開き直す

状況別トラブルシューティング

Windows固有の問題対応

  • ディレクトリ権限問題

    powershell
    # 管理者権限でコマンドプロンプトを実行
    icacls "C:\プロジェクトパス" /grant Everyone:(F)
  • ファイルパス制限の解除

    1. Windowsレジストリを編集:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
    2. LongPathsEnabled1に設定
  • ウイルス対策ソフトの一時停止: Windows Defenderなどでプロジェクトディレクトリをスキャン除外リストに追加

依存関係プラグインの追加

bash
{
  "devDependencies": {
    "@react-native/gradle-plugin": "^0.x.x" // [!code ++]
  }
}
bash
npm install

根本原因と予防策

このエラーの主な技術的原因は:

  • Gradle 8.6以降における依存関係アクセサの実装変更
  • 一時Dから永続Dへの移動時のファイルシステム競合状態
  • Windowsのファイルロックメカニズムとの非互換性

予防策として以下を推奨します:

  • 安定版のGradleを使用(8.5がリスク最小)
  • プロジェクトディレクトリのパスを短く簡潔にする
  • 定期的に.gradleキャッシュをクリーンアップ
  • CI環境ではGradleキャッシュを適切に管理

どの解決策を選択する場合も、操作前に現在のGradleバージョンを記録しておきましょう。問題発生時に元の状態に復帰できるようにすることで、リスクを最小限に抑えられます。