はじめに
テスト業界が長い人なら一度は体験したことがあると思う。
テスト端末にiPAのインストールが出来ねぇ…
そうです。
Provisioning Profileに「UDID」が登録されておらず、
テスト端末へのアプリインストールが蹴られてしまう恐怖の「アレ」です(´・ω・`)
開発に再ビルドしてもらうにもスグに対応してくれないし、
自力でどうにかならないものか…と考えている人のために!
新しいProvisioning Profileをipaへ再署名してインストールできるようにする!
というのを「Xcode無し・再ビルド無し」で実行する手順を書いてみたいと思います。
準備するもの
●Mac ※1
●ipa ※2
●新しい端末(UDID)が含まれているProvisioning Profile ※3
●Provisioning Profileに紐づく証明書(p12) ※4
※1 mac os10.12以降で動作確認済み。
※2 ipaファイル名を「sample001.ipa」とします。
※3 新しく作成したProvisioning Profileを「new.mobileprovision」とします。
※4 証明書(p12)がキーチェーンに登録されていること。
証明書(p12)の名称を「Sample Co., Ltd.」とします。
では、実際に手順を書いてみましょう。
手順
1. ipaファイルとProvisioning Profileを同一フォルダに格納する
2. ターミナルを起動して手順1のフォルダをカレントディレクトリにする
ココまでは手順を書くまでも無いですね。
なんとなく誰でも出来ると思います。
WindowsのDosと同じですし(´・ω・`)
では、次の手順から実際にターミナル上でコマンドを入力して再署名していきましょう。
3. ipaファイル(sample001.ipa)を展開する
unzip sample001.ipa
ここではipaファイルを解凍・展開しているとでも思ってください。
これからやることは、ipaを解凍して中身のファイルを新しいProvisioning Profileに差し替える!
ということをターミナルを使ってやっていきますので、まず最初にipaを解凍しております。
では、次の手順にいきましょう。
4.「codesign」から署名時に必要な資格情報ファイルを作成する。
codesign --display --entitlements :- Payload/Sample001.app > entitlements.plist
急にややこしくなった雰囲気がしますが、簡単に説明するとここでは再署名時に必要となる、
「Entitlementsファイル」というものを作成しています。
このEntitlementsはiPA(アプリ)が出来るまでの工程でも、基本中の基本になります。
もっと詳しく知りたい!という方がいましたら、Apple公式のEntitlementsページを見てみましょう。
上記のページを見れば、どんなものがEntitlementsに設定できるのかスグに理解できると思います。
5. Provisioning Profileを更新する
cp -p new.mobileprovision Payload/Sample001.app/embedded.mobileprovision
「cp」コマンドを利用してProvisioning Profileを上書きしています。
「cp」コマンドは見たまんま「コピー」です(´・ω・`)
凄く簡単に書くと、ここでは「new.mobileprovision」を「Sample001.app」へ上書き(コピー)して!
というコマンドになっております。
これでipaに新しいProvisioning Profileが上書きされました:laughing:
6. 再署名を実施
codesign --force --sign 'iPhone Distribution: Sample Co., Ltd.' --entitlements entitlements.plist 'Payload/Sample001.app'
このコマンドを実行するとMacOSへのログインパスワードを求められます。
※これは再署名するために「キーチェーン」にアクセスしようとしているため入力を求められます
コマンドを実行し、MacOSへのログインパスワードを入力すると、
成功時は「replacing existing signature」という祝福の文字が表示されます。
表示されない場合は、残念ながら失敗しています(´・ω・`)
失敗してしまう!という方は下記の点をご確認ください。
■証明書(Sample Co., Ltd)がキーチェーンに登録されていることを確認すること
→万が一この手順で失敗した場合は、「’iPhone Distribution: Sample Co., Ltd.’」が
キーチェーンに登録されていることを再確認してください。
※キーチェーンってなんですか?という方は、Google先生に聞くか誰かに聞いてください
ここまで来たらあと一歩!
7. 新しいipaを作成する
zip -ry New.ipa Payload'
これが最後の手順です。
これまでの行った「Provisioning Profileの更新、再署名」したipaをZipで固めます。
このコマンドを実行したら、最初に古いipaと新しいProvisioning Profileを格納したフォルダに
「new.ipa」という新しいipaが新規に作られてると思います。
そのipaをインストールできなかった端末にインストールしてみてください。
きっと…インストール出来るようになってるはずです。
これで手順終了となります:grinning:
さいごに
・証明書(p12ファイル)
・Provisioning Profile
・キーチェーン
・Entitlements
本記事で記載した上記の4つについては、勝手に設定変更したり削除したりすると
アプリがインストール出来なくなるだけじゃなく、会社(もしくは個人)で所持している
証明書やProvisioning Profileが全て機能しなくなる可能性もあります。
そうなると、1から作り直し…なんてこともありますので、Provisioning Profileの更新は、
慣れるまで管理者の方と実行することをオススメします。
We are recruiting !
株式会社GENZではソフトウェアのテストサービス業務を行っています。
キャリア採用も行っておりますので、ご興味がある方は以下をご確認ください!
株式会社GENZ – スマホアプリ検証
株式会社GENZ – 採用情報