株式会社GENZが運営する技術ブログです。

  1. その他
  2. 80 view

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

はじめに

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

テスト端末に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 – 採用情報

その他の最近記事

  1. リモートワークでコミュニケーションが増えたことによるデメリット

  2. 【iOS】Push通知用証明書とプロビジョニングプロファイルの作成(2021年版)

  3. GoogleドライブへのファイルアップロードをGASで監視してDiscordに通知してみた…

  4. IMPORTRANGEの関数が便利すぎておちいったワナ

  5. リモートワークでチームワークと作業効率がグーンと上がった話

関連記事