iOSアプリ開発をお仕事メニューに掲げている以上テスト専用端末は揃えたいところですが、余裕のない個人事業主の私にはテスト専用端末を揃えることはできません…
開発案件が一段落していたこともあり、実務とテスト機を兼用している自分のiPadを最近iOS8にアップグレードしたわけですが、ある程度覚悟はしていたものの早速問題が発生。
アプリがAdHocでインストールできなくなりました…
しばらく開発が止まっていたデモ用アプリに動かせる端末を追加してほしいという依頼があり、いつものようにiOS DevCenterのCertificates, Identifiers & Profilesでデバイスを追加してディストリビューションプロビジョニングプロファイルをGenerate。
XCodeでAdHoc配信用にアプリのアーカイブ(ipaファイル)を作成して、普段使いのサーバにアップロード。 あとはいつも通りiPadでplistファイルを開いて、確認ダイアログの「インストール」を押せばインストールが始まるかと思いきや…何も起こらず。
不具合か何かで上書きできないのかと思って、一旦インストールされている古いアプリを削除して試しても変わらず…
詳しく見るためMacにiPadをつないでXCodeのメニュー「Window -> Devices」でデバイス情報ダイアログを開いてデバイスログを表示しながらインストールを試みると…
1 |
LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: jp.soleilsystems.MyApp |
だそうです。
うーん、そう言われてもどうしたら良いものかと頭を抱えつつネットを検索していると、stackoverflowに同じ症状の質問を発見! stackoverflowにはいつも助けられます。
どうもiOSのバンドルIDのキャッシュの仕組みに問題(不具合?)があるらしく、iOS7でアプリをインストールした状態でiOS8にアップグレードした場合に起こる問題らしいです。
plistファイルの
1 2 3 4 5 6 7 8 9 10 11 |
<dict> <key>bundle-identifier</key> <string>jp.soleilsystems.MyApp</string> <key>bundle-version</key> ... </dict> |
の部分のバンドルIDを別の物に書き換えてやることで、とりあえずインストールすることはできました。
1 2 3 4 5 6 7 8 9 10 11 |
<dict> <key>bundle-identifier</key> <string>jp.soleilsystems.MyApp.iOS8fix</string> <key>bundle-version</key> ... </dict> |
別物のアプリとしてインストールする形なのでスッキリしませんが、今回は無償のデモアプリということでひとまず良しとします。