LoginSignup
0
1

More than 3 years have passed since last update.

IPAファイルの署名やプロファイルを手作業で差し替える

Last updated at Posted at 2019-11-02

勤務先のプロジェクトで発生したトラブル対応のお話を、備忘録も含め書き残したいと思います。

Enterprise な Developer Program に優しくない

勤務先のあるプロジェクトでは、私が所属しているのとは別のチームのメンバーが Unreal Engine (以下、UE) でモバイルアプリを開発し、そのアプリの配布先がインハウスな iOS デバイス、というワークフローが存在します。

今回そのプロジェクトの成果物であるアプリが、Provisioning Profile の有効期限切れを迎えるため UE 側から再ビルドしようとしていたのですが、Apple の証明書周りの不具合?でビルドできず詰んでしまい、急遽 .ipa ファイルの中身 (Provisioning Profile) を差し替え、手作業で再署名することでなんとか延命しようと対応しました。

もはや慣れっこですが、iOS 開発は Developer Program 契約なしでの開発入門であったり、Xcode による証明書の自動生成であったり、何かと "初見殺し" とか、"最初は問題なくとも後々の応用部分で詰む" トラップが多彩で困りますね…。UE を使った開発プロジェクトの着手当初も色々サポートしていたのですが、だいぶ苦しめられました。

いきなり参照先

[iOS]ipaファイルの署名やプロファイルやアプリバージョン等をターミナル操作で変更する
https://reftec.work/posts/2019/7/71/

それらしいワードでググるとそれらしい情報がいくつかヒットするのですが、そこは Apple さんのことなので、古い情報は不足や変更が生じて大抵使い物にならなくなっていたりします。
この "コン" さんのブログ記事は現時点でほぼ最新の情報ということもあり、必要な情報と手順がまとまっており、すぐに ipa をゴニョゴニョすることができました。この場を借りてお礼申し上げます m(_ _)m 。

ちょっとつまづいた点

Apple iOS Developer Enterprise Program のヘビーユーザーである当方勤務先では、色々な都合から社名の表記違いで2つの Developer Enterprise Program を契約しているのですが、そのようなケース (超弩級、レア中のレアケースだと思いますが…) だと上掲のワークフローで少し不都合といいますか、暫定的な個別対応が必要になりましたので、記録を残しておこうと思った次第です。

ambiguous な組織名

Enterprise Program 2つ持ちの弊社では、下記のような配布用 (iPhone Distribution) 証明書が存在します。英語大文字か小文字かの違いだけ。

  • iPhone Distribution: HEISHA CO.,LTD. (メインのプロジェクト用)
  • iPhone Distribution: heisha co.,ltd. (UEプロジェクト用)

※社名はサンプルです。

この組織名は Enterprise Program メンバーシップのチーム名が影響すると思いますが、表記の重複が原因と思われる理由により、codesign コマンドを使用した再署名の際に「証明書の指定が曖昧(ambiguous) だ」と叱られました。

codesign --force --sign 'iPhone Distribution: 組織名' --entitlements ./enetitlements.plist --timestamp=none 'Payload/APP名.app'

対処方法

ズバリ、今回再署名したいアプリのプロジェクト (UEプロジェクト用) とは無関係な証明書と秘密鍵を、一時的にキーチェーンアクセスから削除してしまうことです (バックアップ注意) 。

これで問題なく再署名を実行することができました。
ᕙ( 'ω' )ᕗ

0
1
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
0
1