#はじめに
テスト業界が長い人なら一度は体験したことがあると思う。
###テスト端末にipaのインストールが出来ねぇ…
そうです。
Provisioning Profileに新しく購入した端末の「UDID」が登録されておらず、
アプリのインストールが蹴られてしまう恐怖の「アレ」です(´・ω・`)
※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.」とします。
#実行環境
#####macOS 10.15 Catalina
私は上記の環境にて実行しましたが、「macOS 10.12 Sierra」以降なら恐らく動作すると思います。
では、実際の手順を書いていきます!
#手順
####1. ipaファイルとProvisioning Profileを同一フォルダに格納する
####2. ターミナルを起動して手順1のフォルダをカレントディレクトリにする
ココまでは手順を書くまでも無いですね。
なんとなく誰でも出来ると思います。
では、次の手順から実際にターミナル上でコマンドを入力して再署名していきましょう。
####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が上書きされました
####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をインストールできなかった端末にインストールしてみてください。
きっと…インストール出来るようになってるはずです。
これで手順終了となります
#さいごに
・証明書(p12ファイル)
・Provisioning Profile
・キーチェーン
・Entitlements
本記事で記載した上記の4つについては、勝手に設定変更したり削除したりすると
アプリがインストール出来なくなるだけじゃなく、会社(もしくは個人)で所持している
証明書やProvisioning Profileが全て機能しなくなる可能性もあります。
そうなると、1から作り直し…なんてこともありますので、Provisioning Profileの更新は、
慣れるまで管理者の方と実行することをオススメします。
We are recruiting !
株式会社GENZではソフトウェアのテストサービス業務を行っています。
キャリア採用も行っておりますので、ご興味がある方は以下をご確認ください!
[株式会社GENZ - スマホアプリ検証]
(https://www.genz.jp/test-service-menu/mobile-testing/?qi=20210218)
[株式会社GENZ - 採用情報]
(https://www.genz.jp/recruit/?qirecruit=20210218)