2011年3月10日木曜日

Xcode 4になってArchiveが変わってしまったようだ


Xcode 4がリリースされましたね。とりあえずダウンロードしてみました。
確認していると、気になった点がありました。

アプリをアーカイブする機能(メニュー:Product-Archive)があるのですが、
アーカイブした結果がXcode 3とかなり異なっています。

何が困るかって、Titanium mobileでDistributionの際にbuilder.pyでアーカイブ処理を行っているのです。(もちろん Xcode 3の仕様で)
Titanium mobile は SDK 1.6.1で対応済みです(2011/3/20追記)
そのため、Xcode 4のOrganizer-Archivesに出てきません。

リリースノートとか見れば、仕様が記述されているかもしれないのですが、
探すのが面倒だったのでとりあえず比較してみました。

(1) 保存先のディレクトリ
Xcode 3:
/Users/<ユーザ名>/Library/MobileDevice/Archived Applications/
Xcode 4:
/Users/<ユーザ名>/Library/Developer/Xcode/Archives/<日付>/

(2) アーカイブの内容
Xcode 3:
<保存先のディレクトリ>/
        ArchiveInfo.plist
        .app
        .app.dSYM

Xcode 4:
<保存先のディレクトリ>/
         <アプリの名前> <日付>.xcarchive/
                dSYM/
                        .app.dSYM
                Info.plist
                Products/
                        .app

(3) Info.plistの内容
Xcode 4:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>ApplicationProperties</key>
 <dict>
  <key>ApplicationPath</key>
  <string>Applications/アプリ名.app</string>
  <key>CFBundleIdentifier</key>
  <string>アプリのID</string>
  <key>IconPaths</key>
  <array>
   <string>Applications/アプリ名.app/Icon.png</string>
  </array>
 </dict>
 <key>ArchiveVersion</key>
 <real>1</real>
 <key>CreationDate</key>
 <date>2011-03-10T07:09:28Z</date>
 <key>Name</key>
 <string>アプリ名</string>
 <key>SchemeName</key>
 <string>アプリ名</string>
</dict>
</plist>

一応、Xcode4のアーカイブの仕様にしたがってbuilder.pyを修正してみたところ、うまくいったのですが... まあ、そのうち対応版がリリースされるのを待った方が良さそうですね。