2014年5月7日水曜日

Android Studio-0.5.7: シンボリックリンクを含むパスのプロジェクトを Android Studio-0.5.7 で開くとプロジェクトとモジュールの設定ファイルの内容がローカルパスに書き換えられてしまうよ。

Android Studioは執筆現在で最新版は0.5.7(インストーラー付きでAndroid Developersからダウンロードできるリンクは0.5.2→アップデート可能。またはCanaryのLatestから.zipで直接入手できます。)

0.5.2ではまだ発症するAndroid Studioのプロジェクト設定ファイルやモジュール設定ファイルの設定内容で $PROJECT_DIR$$MODULE_DIR$絶対パスに置き換えられてしまい、特にGitHubを用いたチーム開発を行っている場合などに問題となります(†1)これは 0.5.7 までの間にバグ修正されたらしく、0.5.7では発症しなくなりました。


この挙動の修正を確認して一安心していたら、どうやら似たようなバグがまだ潜んでいました。

プロジェクトをシンボリックリンクを含むパスに配置し、そのシンボリックリンクを含むパスを Android Studio から開くと、似たような問題が起こり、$PROJECT_DIR$ が、例えば $HOME$/dir-hoge/dir-fuga/project-dir/ の様に設定ファイル中で書き換えられてしまいます。開くだけで書き換えられます。

具体的に被害が発生する設定ファイルは、

  • .idea/gradle.xml
  • app/app.iml
  • project-name.iml

など。これらのファイルの中で、本来は $PROJECT_DIR$ であるとか $MODULE_DIR$ のままで良いパス設定周りがほぼすべて $HOME$ 基準の具体的でローカルな相対パスに置き換えられてしまいます。

具体的な発症環境の事例としては、例えば、アクティブなソフトウェア開発プロジェクトを Dropbox を用いてPC間で同期しているような場合に、 ~/Dropbox/projects/active/repositories というリポジトリー置き場が実体としてPCに用意してあって、実際の利用には便宜上 ln -s で ~/repos にシンボリックリンクをしていた場合に、 ~repos/android-studio-test-project などとシンボリックリンクを含むパスを Android Studio で「開く」と発生してしまいます。

回避方法としては、 Android Studio を用いる際は少なくとも 0.5.7 現在、シンボリックリンクを含むパス開く事を避けシンボリックリンクを完全に展開したパスを開く必要があります。幸い、 Android Studio では最近使ったプロジェクトを開きやすいランチャー構造になっている事もあり、この問題を知ってさえ居れば無用なトラブルの対応に時間を浪費せずに済みます(╹◡╹)

…私は一晩浪費したけど…。そして Android Studio にはバグとして報告シマシタ。

0 件のコメント:

コメントを投稿