2010年7月2日金曜日

iPhoneのOSアップグレード後にiTunesのミュージックライブラリが壊れた

iPhone3G(Sでもない)をiOS4へアップグレードしたら、iTunesのミュージックライブラリのファイルパスが壊れてエライことになった( ゚Å゚)。

iTunes Music Library.xml内の「Location」キーの値全てに、頭に「file://localhost/」が付いてしまい、楽曲が正しく発見できないのだ。

iTunes Music Library.xmlをエディタで開き、「file://localhost/」を空文字列と置換して保存。その後iTunesを起動しなおしてみると、ファイルパスが正しく認識されたので解決したかと思ったのだが、翌日、再度iTunesを起動してみると、再びファイルパスに「file://localhost/」が復活してしまった。


調べてみると、iTunesのライブラリはiTunes Library.itlというバイナリファイルがメインソースで、それを元にiTunes Music Library.xmlが自動生成されているようだ。よって、手動で.xmlファイルを書き換えてもiTunesを再起動すると元の状態に戻ってしまうとのこと。
iTunes Music Library.xmlを編集したい時の覚え書き - 道具眼日誌:古田-私的記録

上記サイトには、「iTunes Music Library.xmlを他のフォルダにバックアップした上で、.itlファイルを削除し、iTunesを起動後、ファイル->インポートから編集した.xmlファイルを取り込む」方法が解決策として提示されていた。だが、私の環境だと、「file://localhost/」が付いていない.xmlファイルをインポートしても、なぜか「file://localhost/」が復活してしまうという状態で嵌ってしまった。


最終的に、iTunesフォルダ直下には必要最低限のリソースのみ配置。
  • Album Artworkフォルダ
  • iTunes Musicフォルダ
  • Mobile Applicationsフォルダ
  • iTunes Library.itl
そしてiTunesを起動すると、iTunesを何度再起動しても「file://localhost/」が追加されずに、正常にファイルパスが設定されるようになった。


原因として考えられるのは、iOS4へのアップグレード時に表示されたエラーメッセージ。
「このiPhoneの復元中にエラーが起きました(-402620395)」

復元に一度失敗したのが、ライブラリのファイルパスが壊れた原因かもしれない。このエラーは、iPhone側のプロビジョニングプロファイルが期限切れだったりすると発生するようだ。
このiPhoneの復元中にエラーが起きました (-402620395) - F.Ko-Jiの「一秒後は未来」


iTunesには2千曲以上の楽曲を入れているが、全部帳消しにして、ライブラリを白紙からつくり直さなきゃいけないかと、ちょっと途方に暮れた。復活してヨカッタε- (´ー`*) 。