-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_iOSDeployment
iOSのデプロイについてまとめる。
| 項番 | 配布方法 | 用途 | 配布先 | ライセンス | App ID (Suffix) | 証明書 | Provisioning Profile | デバイスID(UDID)登録 |
|---|---|---|---|---|---|---|---|---|
| 1 | AppStore | 公式 | 無制限 | Apple Developer Program | Explicit App ID | App Store and Ad Hoc | App Store | 不要 |
| 2 | Debug | Debug | Debug用実機 | 〃 |
Wildcard App ID or Explicit App ID |
iOS App Development | iOS App Development | 必要 ※ 注意事項 |
| 3 | AdHoc | 限定目的 | 登録したデバイス (最大100台まで) |
Apple Developer Program or Apple Developer Enterprise Program |
〃 | App Store and Ad Hoc | Ad hoc | 〃 |
| 4 | In-House | 社内利用 | 社内デバイス | Apple Developer Enterprise Program | 〃 | In House and Ad Hoc | In House | 不要 |
- デバイス変更、追加・削除などがあった場合、Provisioning Profileの編集が必要になる。
- Provisioning Profileの編集が発生すると、アプリケーションの再インストールが発生するので注意が必要。
iOSのデプロイは複雑なため、
まず、iOSのデプロイの区分についてまとめる。
ここでは以下の2つの区分を定義した。
iOSのデプロイは、開発用途であっても、ライセンスを持っていないと証明書とプロファイルを発行できない。
このライセンスは、以下のデプロイが可能。
-
登録には、
- XXXXXが必要になる。
- また、年間XXXXX円の費用がかかる。
このライセンスは、以下のデプロイが可能。
-
登録には、
- 世界標準の企業識別コードであるDUNS番号が必要になる。
- また、年間XXXXX円の費用がかかる。
Xcode7以降を使うのであれば、無償で証明書とProvisioning Profileを発行可能。
ただし、デプロイ(アプリの書き出し)は不可能で、
あくまで開発用途での短期間(3日間)、Debug実行だけ許可。
(プッシュ通知などのApple提供MBaaSを使うならライセンスが必要)
-
汎用的なアプリケーションを世界市場に対して配信するようなケース。
-
Appleの審査を受けてAppStoreに登録し、デバイスもしくはPCのApp Store(iTunes)経由でインストール。
-
上記以外の、テストや試用、特定企業向けアプリ配信にも利用できる。
未記載(元 Wiki も見出しのみ)。
未記載(元 Wiki も見出しのみ)。
汎用的なアプリケーションを世界市場に対して配信する。
開発中のアプリをテストや一定のユーザのみで試用する目的で配信する。
(App Storeの基盤を使ってβテストのようなことが出来るようになる)
App Store配信で特定企業(Custom B2Bアプリ)に配信する。
未記載(元 Wiki も見出しのみ)。
-
Appleの審査を受けず、
- 「ライセンス契約企業」向けのアプリケーションを「ライセンス契約企業」に対してデプロイする。
- 注:**『「特定ドメイン」向けのアプリケーションを「特定ドメイン」に対して配信する。』**ではないので注意。
などのケースで使用できる。
-
方法としては、
の3つの方法がある。
以下が必要。
-
ライセンス登録
Apple Developer Program -
開発用 証明書
-
App ID(iOSアプリのID)登録
開発用なので「Wildcard App ID」を選択する。 -
デバイスID(UDID)
-
開発用 Provisioning Profile
- Xcode で
- [Product]メニュー->[Build Settings]で[Code Signing にProvisioning Profile]を指定
- 左上で、
- 使用するデバイスを選択する。
- Runボタンを押して実行する。
1つのDeveloper Programの登録ごとに100台のiOSデバイスを登録し、
そのデバイスに対して以下の3つのデプロイ方法でアプリをインストールできる。
事前のデバイス登録や、100台までというのがネック。
以下が必要。
-
ライセンス登録
- Apple Developer Program
- Apple Developer Enterprise Program
-
配布用 証明書(App Store and Ad Hoc)
-
App ID(iOSアプリのID)登録
配布用なので「Explicit App ID」を選択する。 -
デバイスID(UDID)
-
配布用 Provisioning Profile(AdHoc)
-
Xcodeでアプリのプロジェクトを開く
-
[Target]メニュー
- [Build Setting]->[Code Signing]セクションの[Code Signing Identity]を、
- [iPhone Developer]ではなく、[iPhone Distribution]に変更し、
- 作成した配布用 Provisioning Profileを選択する。
-
[Product]メニュー
- [Build for Archive]->[Archive]を選択、アーカイブを作成。
-
[Organizer]が自動的に開き、[Archive]タブにアプリが表示される。
- [Organizer]の[Archive]タブでアプリを選択、[Share]ボタン
- [Contents]で[iOS App Store Package(.ipa)]を選択。
- [Identity]でビルド時に選択した配布用 Provisioning Profileを選択。
- [Next]をクリック(以降の手順はデプロイ方法によって異なる)。
デプロイ方法としては以下の方法がある。
-
iTunesの使用
-
Webからのダウンロード
-
キッティング用
- iPhone構成ユーティリティを使用(discon)
- Apple Configurator
以下のサイトが参考になる。
- RBXBR » iOSアプリのAd-Hoc配布方法まとめ
http://rbxbr.net/archives/1015
事前のデバイス登録や、台数制限が無い。
- ただし、In-House版アプリの
- 利用者は、iDEP契約主体法人の従業員に限る。
- 利用者以外にインストールされないよう厳重管理が必要。
以下が必要。
-
ライセンス登録
Apple Developer Enterprise Program -
配布用 証明書(In House and Ad Hoc)
-
App ID(iOSアプリのID)登録
配布用なので「Explicit App ID」を選択する。 -
配布用 Provisioning Profile(In House)
-
OTA形式とは
- OTAとは、Over-The-Air の略。
- Mac-Xcode、Mac-iTunesなどのケーブル経由でなく配布可能。
-
アーカイブの手順
- 基本的に、AdHocと同じ。
- OTA配布用のplistが必要になるが、自動生成される。
セキュアなサーバにOTA形式のファイルをアップして、URLからインストールする。
従って、In-House(OTA形式)のデプロイでは、以下が必要になる。
- HTTPSが使えるWWWサーバ
- 画面表示用のhtmlファイル
- DLするipaファイル
- 対応するplistファイル
-
証明書要求ファイルを生成する
-
MACのキーチェーンアクセスを使用して作成する。
- 開発用MACのキーチェーンアクセスを起動
- メニューの[キーチェーンアクセス]->[証明書アシスタント]->[認証局に証明書を要求…]
-
証明書情報画面を入力する、
- メールアドレス(開発者登録した開発者のメールアドレス)
- 通称(空白)
- CAのメールアドレス(空白)
- 要求の処理
ラジオボタン[ディスクに保存]を選択し、
チェックボックス[鍵ペア情報を指定]をチェックする。
-
鍵ペア情報画面を入力する。
- 鍵のサイズ
- アルゴリズム
-
保存場所を指定して[保存]->[完了]。
-
-
証明書を生成する
以下に移動し、-
Apple Developer Program のサイトにログイン
- ---> MemberCenter
- ---> Certificates, Identifiers & Profiles
- ---> iOS Apps の Certificates
- ---> iOS Certificates [+]
-
そこで、以下のように入力する。
- [Development]->[iOS App Development]を選択し、[Continue]ボタン
- [About Creating a Certificate Signing Request]画面で、[Continue]ボタン
- [Choose File…]ボタン -> 証明書要求ファイルを選択 -> [選択]ボタン -> [Generate]ボタン
- 証明書が生成されたら、[Download]ボタン -> [Done]ボタン
-
開発用(証明書の取得)との違いは、
-
[Development]->[iOS App Development]を選択し、[Continue]ボタンではなく、
[Production]->[App Store and Ad Hoc]を選択し、[Continue]ボタンを押下する。
ダウンロードした証明書(ios_development.cer)をダブルクリックし、キーチェーンアクセスに登録。
ダウンロードした証明書(ios_distribution.cer)をダブルクリックし、キーチェーンアクセスに登録。
以下の画面に移動し、
- Apple Developer Program のサイトにログイン
- ---> MemberCenter
- ---> Certificates, Identifiers & Profiles
- ---> iOS Apps の Identifiers
- ---> iOS App IDs [+]
そこで、以下の入力項目を入力する。
以下の何れかを入力する。
- AppIDの説明
- AppIDそのもの
- 補足付きの短い文章
最近は、「App ID Prefix = Team ID」となっているらしい。
Explicit App ID or Wildcard App IDのどちらかを選び、
App ID Suffixとして、Bundle IDを入力する。
この値(App ID Suffix)は、Xcodeで作成されたプロジェクトの
「Bundle Identifier」と一致している必要がある。
慣例的に自分のサイトのURLをひっくり返した名前が使われる。
- 参考
- 「Bundle Identifier Xcode」などでググるとイイ。
- Xcode7からのBundle Identifier定義
https://blog.ikenie3.org/xcode7_bundle-identifier_setting/
- Bundle IDを入力
- アプリ固有のAppIDを作成する場合
- アプリ内課金(アプリ内購入)するアプリ
- iCloudなどのサービスを組み込むアプリ
- 配布用Provisioning Profileに紐付けたい場合
- 最後「*」で終わるBundle IDを入力
- 開発専用など、どのアプリでも使用できるAppIDを作成する場合。
使える機能(Resources、外部機器、MBaaSなどへのアクセスの可否)を選択する。
- iTunesにデバイスを接続
- 「概要」タブにある「シリアル番号」をクリックする。
- 「識別子(UDID)」表示下で「編集」メニューの「コピー」クリックする。
- クリップボードにデバイスIDがコピーされる。
- アプリケーション > Xcode
- XcodeのWindowメニュー > Organizerを起動する。
- 「Identifier」の欄に書かれている半角英数字の識別子をコピーする。
- Apple Developer Program のサイトにログイン
-
---> MemberCenter
-
---> Certificates, Identifiers & Profiles
-
---> iOS Apps の Devices
-
---> iOS Apps Devices [+]
-
そこで、以下の入力項目を入力する。
- 1台登録 Register Device
- 複数台登録 Register Multiple Devices
-
不正な経路でのアプリケーションのインストールを防止する役割を持つ。
以下が埋め込まれている。
- App ID
- 開発者ID
- デバイスID
-
Apple Developer Program のサイトにログイン
- ---> MemberCenter
- ---> Certificates, Identifiers & Profiles
- ---> iOS Apps の Provisioning Profiles
- ---> iOS Provisioning Profiles [+]
-
そこで、以下のように入力する。
- [Development]->[iOS App Development]を選択し、[Continue]ボタン
- [Select AppID]画面で、AppIDを選択し、[Continue]ボタン
- [Select certificates]画面で、開発用 証明書を選択し、[Continue]ボタン
- [Select devices]画面で、アプリの転送/実行を許可する端末を選択し、[Continue]ボタン
- [Name this profile and generate]画面で、Profile Nameを入力し、[Generate]ボタン
- ProvisioningProfileが生成されたら、[Download]ボタン -> [Done]ボタン
開発用(Provisioning Profileの作成)との違いは、
-
[Development]->[iOS App Development]を選択し、[Continue]ボタンではなく、
-
Apple Developer Programの場合、
[Distribution]->[App Store] or [Ad hoc]を選択し、[Continue]ボタンを押下する。 -
Apple Developer Enterprise Programの場合、
[Distribution]->[AdHoc] or [In House]を選択し、[Continue]ボタンを押下する。
-
-
[Select certificates]画面で、開発用 証明書を選択し、[Continue]ボタンではなく、
[Select certificates]画面で、配布用 証明書を選択し、[Continue]ボタンを押下する。
-
ダウンロードしたProvisioningProfile(develop.mobileprovision)をダブルクリックし、インストール。
-
ProvisioningProfileの検証。
- ProvisioningProfileを、Xcodeのアイコンに重ねて開き、Organizerを確認する。
- 左メニューの接続されているデバイス横のランプが緑になっている事を確認する。
- デバイス下の[Provisioning Profiles]を選択すると、登録されているプロファイルが表示される。
- 「Valid profile」となっているか確認する。「Invalid」だと正しく登録されていない。
ダウンロードしたProvisioningProfile(xxxxxxx.mobileprovision)をダブルクリックし、インストール。
-
アプリケーションの配布に関するガイド (TP40012582 0.0.0)
https://developer.apple.com/jp/documentation/AppDistributionGuide.pdf -
iOSアプリの開発準備と申請の手順まとめ | makotton.com
http://makotton.com/2015/07/05/1138- デベロッパーアカウントの取得と更新
- MemberCenterでの作業
- デベロッパー証明書の準備
- AppIDの作成
- デバイスの登録
- Provisioning Profileの作成
- Xcodeでのプロジェクト設定
- アプリ配布
-
公式ストア経由以外での配布 - Monaca Docs
https://docs.monaca.io/ja/manual/deploy/non_market_deploy/ -
iPadやiPhoneで社内向け業務アプリを作る方法 | イリテク
http://golog.plus.vc/iphone/2895/ -
[iOS] Apple Developer Program と
Apple Developer Enterprise Program の
違い | Developers.IO
http://dev.classmethod.jp/smartphone/difference-between-developer-and-enterprise-program/ -
大企業が Apple Developer Program と
Apple Developer Enterprise Program を
契約するときに知っておきたい情報まとめ - Qiita
https://qiita.com/irgaly/items/f6768c7a095f05d2098e
-
[iOS]Xcodeで実機デバッグするための5STEP
http://tokyo.supersoftware.co.jp/code/2001- [iOS]Xcodeで実機デバッグするためのSTEP1: Certificateの作成(開発用Macの登録)
http://tokyo.supersoftware.co.jp/code/2011 - [iOS]Xcodeで実機デバッグするためのSTEP2: 実機の登録(開発用iOS端末の登録)
http://tokyo.supersoftware.co.jp/code/2046 - [iOS]Xcodeで実機デバッグするためのSTEP3: AppIDの登録(デバッグしたいアプリの登録)
http://tokyo.supersoftware.co.jp/code/2053 - [iOS]Xcodeで実機デバッグするためのSTEP4: Provisioning Profile の作成
http://tokyo.supersoftware.co.jp/code/2069 - [iOS]Xcodeで実機デバッグするためのSTEP5: 実機デバッグするための Xcode の設定変更
http://tokyo.supersoftware.co.jp/code/2072
- [iOS]Xcodeで実機デバッグするためのSTEP1: Certificateの作成(開発用Macの登録)
-
iOSデバイス(iPhone・iPad)実機テスト | Yasushi Noguchi Class
http://r-dimension.xsrv.jp/classes_j/ios_test/ -
iOSアプリを実機で動作確認しよう-プロビジョニングファイルの作成手順- | Developers.IO
http://dev.classmethod.jp/smartphone/iphone/ios-device-provisioning-file/
- RBXBR » iOSアプリのAd-Hoc配布方法まとめ
http://rbxbr.net/archives/1015
-
iOS Developer Enterpriseで社内向けiPhoneアプリを作る方法 [完全版] | イリテク
https://iritec.jp/selfhack/3355/ -
In-House(組織内) iOSアプリ配布に関する情報をまとめてみた - えびすい@スマホアプリ開発のALPHAです。
http://blogs.alpha-com.co.jp/entry/2016/07/11/093000 -
Monacaアプリ(iOS)をネットワーク経由で配布する方法(In Houseビルドについて) : アシアルブログ
http://blog.asial.co.jp/1379
補足:本ページの記述は Xcode 7〜9 前後(Member Center 時代)のもの。 現在は Apple Developer サイトの「Certificates, Identifiers & Profiles」に統合され、 配布方法も App Store Connect / TestFlight、Ad Hoc、Enterprise(In-House)、 Custom Apps(旧 Custom B2B)という整理になっている。 Apple Developer Enterprise Program は審査要件が厳格化されており、 一般の社内配布には Apple Business Manager の Custom Apps が案内されることが多い。
移行メモ
- サイドローディングの方法として Debug / AdHoc / In-House の 3 つが 挙げられているにもかかわらず「の2つの方法がある。」となっていたため 「の3つの方法がある。」に修正した。
- In-House の前提にあった「配布用 証明書()」は括弧内が空だったため、 サマリ表の記載に合わせて「配布用 証明書(In House and Ad Hoc)」とした。
- 「外部機器m,MBaaS」→「外部機器、MBaaS」に修正した。
- 配布用 Provisioning Profile の作成手順で、Apple Developer Enterprise Program の場合の選択が「[Development]->[Distribution]->[AdHoc] or [In House]」と なっていたが、直前の Apple Developer Program の記述と同様に 「[Distribution]->[AdHoc] or [In House]」の誤記と判断して修正した。
- 元 Wiki の縦方向セル結合(
|~|)は GitHub の表では表現できないため 「〃」に置き換え、&br;は<br>に置き換えた。- 同名の見出しが多数あり GitHub Wiki でアンカが衝突するため、 括弧で文脈を補って一意にした(「前提」「デプロイ方法」「アーカイブ」 「取得」「登録」「作成」「PCに登録」「開発用」「配布用」「Debug」 「Ad-Hoc(限定目的)」「In-House(社内利用)」)。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替えた。
Tags: 移行, iOS, デプロイ, App Store, Ad Hoc, In-House, Provisioning Profile, 証明書, UDID, App ID
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。