Android StudioやGradleでSeveral environment variables and/or system properties contain different paths to the Android Preferences folderが発生する場合、Android設定フォルダーを示す複数の変数が競合しています。AGP 8.11以降では、非推奨のANDROID_PREFS_ROOTを削除した後も失敗が続く回帰も報告されています。
代表的なログ
com.android.prefs.AndroidLocationsException:
Several environment variables and/or system properties contain different paths
to the Android Preferences folder.
Please correct and use only one way to inject the preference location.
- ANDROID_USER_HOME(environment variable): C:\Users\user\.android
- ANDROID_PREFS_ROOT(environment variable): C:\Users\user
It is recommended to use ANDROID_USER_HOME as other methods are deprecated
原因
Android toolsはANDROID_USER_HOME、ANDROID_PREFS_ROOT、ANDROID_SDK_HOMEを調べます。複数の有効な設定が異なるパスを指すと保存先を一意に決められず、AndroidLocationsExceptionになります。公式ソースでは後者2つは非推奨で、ANDROID_USER_HOMEが推奨されています。
さらにIssue #555796808では、AGP 8.11以降/9.0でANDROID_PREFS_ROOTを削除してもビルドがブロックされる不具合が報告されました。
切り分け: 複数の変数が現在も別パスを指していれば設定競合です。削除・統一済みなのに失敗する場合は、AGP回帰または起動済みGradleデーモンが保持する古い環境を疑います。
発生条件・対象バージョン
ANDROID_USER_HOMEと旧変数を異なる値で同時設定している- 環境変数とJavaシステムプロパティが異なるパスを指している
- IDE、CI、シェル設定、Gradleデーモンに古い値が残っている
- 既知の回帰はAGP 8.11以降/9.0で報告されている
公式に確認できる修正版はAndroid Studio Rabbit 2 | 2026.2.2 Canary 3とAGP 9.5.0-alpha08です。安定版や旧系列へのバックポートは公式情報が出るまで断定できません。
推奨する解決手順
- OSのユーザー/システム環境変数、シェル、CI、Android Studio、
gradle.properties、JAVA_TOOL_OPTIONSを確認します。
# macOS / Linux
printenv ANDROID_USER_HOME
printenv ANDROID_PREFS_ROOT
printenv ANDROID_SDK_HOME
printenv ANDROID_HOME
# Windows PowerShell
Get-ChildItem Env:ANDROID_*
- Preferencesの指定を
ANDROID_USER_HOMEだけに統一します。カスタム保存先が不要なら上書きを削除し、標準の.androidへ戻します。 - SDKの場所には
ANDROID_HOMEを使い、Preferencesの場所と混同しないでください。 - Android Studioを終了し、Gradleデーモンを停止して新しいターミナルから再実行します。
./gradlew --stop
./gradlew tasks --stacktrace
- 設定を整理してもAGP 8.11以降/9.0で再現する場合は、修正を含むAGP 9.5.0-alpha08以降を検証します。
代替策
- alpha版を導入できない場合は、最後に正常動作を確認したAGPへ一時固定します。公式の恒久修正ではありません。
- CIではPreferences用変数を1つだけジョブに渡し、ホスト側の古い値を継承しないようにします。
- クリーンなrunnerで成功するなら、既存IDEやGradleデーモンの環境を重点的に確認します。
ANDROID_PREFS_ROOTを別の値で再設定する方法は非推奨設定を残します。可能な限りANDROID_USER_HOMEへ移行してください。
確認方法
- Preferences指定がゼロ、または
ANDROID_USER_HOMEの1つだけになっている ./gradlew tasks --stacktraceが例外なしで完了する- Gradle Syncと通常ビルドが成功する
- CIをクリーンな環境で再実行しても成功する
注意点
ANDROID_HOMEはSDK、ANDROID_USER_HOMEはPreferences用です。- 起動済みのIDEやGradleは環境変数変更を認識しない場合があります。
- Windowsではユーザー変数とシステム変数の両方を確認します。
.androidの付け方は各変数の公式仕様に合わせてください。
まとめ
複数のAndroid Preferences指定を整理し、必要ならANDROID_USER_HOMEだけに統一するのが基本です。削除後もAGP 8.11以降/9.0で失敗する場合は既知の回帰を疑い、Rabbit 2 Canary 3/AGP 9.5.0-alpha08以降を検証してください。
