4
7

More than 3 years have passed since last update.

ipaファイルのProvisioning Profileの更新をしてみた(Xcodeなし)

Posted at

はじめに

テスト業界が長い人なら一度は体験したことがあると思う。

テスト端末にipaのインストールが出来ねぇ…:cold_sweat:

そうです。
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が上書きされました: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 - 採用情報

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7