「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[iOS開発]] --[[スマホネイティブのデプロイ]] *目次 [#ff5128c3] #contents *概要 [#j96f21b2] iOSのデプロイについてまとめる。 **サマリ [#gf52fe49] |項番|配布方法|用途|配布先|[[ライセンス>#c86ece34]]|[[App ID (Suffix)>#icf65ee1]]|[[証明書>#d9dcbc7e]]|[[Provisioning Profile>#nfe52cd2]]|[[デバイスID(UDID)登録>#ce2a61b0]]|h |1|[[AppStore>#odb47e67]]|公式|無制限|[[Apple Developer Program>#lbbb87d3]]|[[Explicit App ID>#m8756407]]|App Store and Ad Hoc|App Store|不要| |2|[[Debug>#m0188502]]|Debug|Debug用実機|~|[[Wildcard App ID>#e1f5e0a0]]&br; or [[Explicit App ID>#m8756407]]|iOS App Development|iOS App Development|必要&br;[[※ 注意事項>#pe6ac6ad]]| |3|[[AdHoc>#m2567603]]|限定目的|登録したデバイス&br;(最大100台まで)|[[Apple Developer Program>#lbbb87d3]]&br;or [[Apple Developer Enterprise Program>#ddd58bcc]]|~|App Store and Ad Hoc|Ad hoc|~| |4|[[In-House>#kb58fe54]]|社内利用|社内デバイス|[[Apple Developer Enterprise Program>#ddd58bcc]]|~|In House and Ad Hoc|In House|不要| **注意事項 [#pe6ac6ad] -デバイス変更、追加・削除などがあった場合、[[Provisioning Profile>#nfe52cd2]]の編集が必要になる。 -[[Provisioning Profile>#nfe52cd2]]の編集が発生すると、アプリケーションの再インストールが発生するので注意が必要。 *区分 [#s2d40b58] iOSのデプロイは複雑なため、~ まず、iOSのデプロイの区分についてまとめる。 ここでは以下の2つの区分を定義した。 -[[ライセンス>#c86ece34]] -[[用途>#n4220934]] **ライセンス [#c86ece34] iOSのデプロイは、開発用途であっても、ライセンスを持っていないと証明書とプロファイルを発行できない。 ***Apple Developer Program [#lbbb87d3] このライセンスは、以下のデプロイが可能。 -[[公式ストア>#odb47e67]] --[[AppStore>#odb47e67]] -[[サイドローディング>#y4e22940]] --[[Debug>#m0188502]] --[[AdHoc(限定目的)>#m2567603]] -登録には、 --XXXXXが必要になる。 --また、年間XXXXX円の費用がかかる。 ***Apple Developer Enterprise Program [#ddd58bcc] このライセンスは、以下のデプロイが可能。 -[[サイドローディング>#y4e22940]] --[[AdHoc(限定目的)>#m2567603]] --[[In-House(社内利用)>#kb58fe54]] -登録には、 --世界標準の企業識別コードであるDUNS番号が必要になる。 --また、年間XXXXX円の費用がかかる。 ***補足事項(Xcode7) [#t44b8038] Xcode7以降を使うのであれば、無償で証明書とProvisioning Profileを発行可能。~ ただし、&color(red){デプロイ(アプリの書き出し)は不可能};で、~ あくまで開発用途での短期間(3日間)、Debug実行だけ許可。 (プッシュ通知などのApple提供MBaaSを使うならライセンスが必要) **用途 [#n4220934] ***開発用 [#p49b3b6a] -[[サイドローディング>#y4e22940]] --[[Debug>#m0188502]] ***本番リリース用 [#odb2e266] -[[公式ストア>#odb47e67]] --[[AppStore>#odb47e67]] -[[サイドローディング>#y4e22940]] --[[AdHoc(限定目的)>#m2567603]] --[[In-House(社内利用)>#kb58fe54]] *AppStore (公式ストア) [#odb47e67] -汎用的なアプリケーションを世界市場に対して配信するようなケース。 -Appleの審査を受けてAppStoreに登録し、デバイスもしくはPCのApp Store(iTunes)経由でインストール。 -上記以外の、テストや試用、特定企業向けアプリ配信にも利用できる。 **前提 [#vd25113e] **アーカイブ(XXX形式) [#q3f925ab] **デプロイ方法 [#v729c8ab] ***AppStore (公式ストア) から配信。 [#s39f64b9] 汎用的なアプリケーションを世界市場に対して配信する。 ***App StoreのTest Flight機能 [#n3eebcc2] 開発中のアプリをテストや一定のユーザのみで試用する目的で配信する。~ (App Storeの基盤を使ってβテストのようなことが出来るようになる) ***App StoreでCustom B2Bアプリ配信 [#jd0f41a1] App Store配信で特定企業(Custom B2Bアプリ)に配信する。 ***MDM(Mobile Device Management) [#kdf14fdb] *サイドローディング [#y4e22940] -Appleの審査を受けず、 --「ライセンス契約企業」向けのアプリケーションを「ライセンス契約企業」に対してデプロイする。 --注:&color(red){『「特定ドメイン」向けのアプリケーションを「特定ドメイン」に対して配信する。』};ではないので注意。 >などのケースで使用できる。 -方法としては、 --[[Debug>#m0188502]] --[[AdHoc(限定目的)>#m2567603]] --[[In-House(社内利用)>#kb58fe54]] >の2つの方法がある。 **Debug [#m0188502] ***前提 [#r5ae8071] 以下が必要。 -ライセンス登録~ Apple Developer Program -開発用 証明書 --[[取得>#l93ca70c]] --[[PCに登録>#s2dd070a]] -[[App ID(iOSアプリのID)登録>#n8450cbf]]~ 開発用なので「Wildcard App ID」を選択する。 -デバイスID(UDID) --[[取得>#be6bff9f]] --[[登録>#u8d6bc3e]] -開発用 Provisioning Profile --[[作成>#gf41bd91]] --[[登録>#c2d37f68]] ***デプロイ方法 [#k7632977] -Xcode で --[Product]メニュー->[Build Settings]で[Code Signing にProvisioning Profile]を指定 --左上で、 ---使用するデバイスを選択する。 ---Runボタンを押して実行する。 **AdHoc(限定目的) [#m2567603] 1つのDeveloper Programの登録ごとに100台のiOSデバイスを登録し、~ そのデバイスに対して以下の3つのデプロイ方法でアプリをインストールできる。 事前のデバイス登録や、100台までというのがネック。 ***前提 [#h232d841] 以下が必要。 -ライセンス登録 --Apple Developer Program --Apple Developer Enterprise Program -配布用 証明書(App Store and Ad Hoc) --[[取得>#tb6bfece]] --[[PCに登録>#b0e17f12]] -[[App ID(iOSアプリのID)登録>#n8450cbf]]~ 配布用なので「Explicit App ID」を選択する。 -デバイスID(UDID) --[[取得>#be6bff9f]] --[[登録>#u8d6bc3e]] -配布用 Provisioning Profile(AdHoc) --[[作成>#te4ce87b]] --[[登録>#w28faa13]] ***アーカイブ(AdHoc形式) [#we9e5b41] -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]をクリック(以降の手順はデプロイ方法によって異なる)。 ***デプロイ方法 [#q33e984e] デプロイ方法としては以下の方法がある。 -iTunesの使用 -Webからのダウンロード -キッティング用 --iPhone構成ユーティリティを使用(discon) --Apple Configurator 以下のサイトが参考になる。 -RBXBR » iOSアプリのAd-Hoc配布方法まとめ~ http://rbxbr.net/archives/1015 **In-House(社内利用) [#kb58fe54] -事前のデバイス登録や、台数制限が無い。 事前のデバイス登録や、台数制限が無い。 --ただし、In-House版アプリの --利用者は、iDEP契約主体法人の従業員に限る。 --利用者以外にインストールされないよう厳重管理が必要。 -ただし、In-House版アプリの -利用者は、iDEP契約主体法人の従業員に限る。 -利用者以外にインストールされないよう厳重管理が必要。 ***前提 [#f85a9868] 以下が必要。 -ライセンス登録~ Apple Developer Enterprise Program -配布用 証明書() --[[取得>#tb6bfece]] --[[PCに登録>#b0e17f12]] -[[App ID(iOSアプリのID)登録>#n8450cbf]]~ 配布用なので「Explicit App ID」を選択する。 -配布用 Provisioning Profile(In House) --[[作成>#te4ce87b]] --[[登録>#w28faa13]] ***アーカイブ(OTA形式) [#kbb82fb7] -OTA形式とは --OTAとは、Over-The-Air の略。 --Mac-Xcode、Mac-iTunesなどのケーブル経由でなく配布可能。 -アーカイブの手順 --基本的に、AdHocと同じ。 --OTA配布用のplistが必要になるが、自動生成される。 ***デプロイ方法 [#bc889b13] セキュアなサーバにOTA形式のファイルをアップして、URLからインストールする。 従って、In-House(OTA形式)のデプロイでは、以下が必要になる。 -HTTPSが使えるWWWサーバ -画面表示用のhtmlファイル -DLするipaファイル -対応するplistファイル *証明書 [#d9dcbc7e] **取得 [#wdfa7d4f] ***開発用 [#l93ca70c] -証明書要求ファイルを生成する --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]ボタン -次に、[[証明書をキーチェーンアクセスに登録する。>#s2dd070a]] ***配布用 [#tb6bfece] [[開発用>#l93ca70c]]との違いは、 -[Development]->[iOS App Development]を選択し、[Continue]ボタンではなく、~ [Production]->[App Store and Ad Hoc]を選択し、[Continue]ボタンを押下する。 -次に、[[証明書をキーチェーンアクセスに登録する。>#b0e17f12]] **PCに登録 [#e9558936] ***開発用 [#s2dd070a] ダウンロードした証明書(ios_development.cer)をダブルクリックし、キーチェーンアクセスに登録。 ***配布用 [#b0e17f12] ダウンロードした証明書(ios_distribution.cer)をダブルクリックし、キーチェーンアクセスに登録。 *App ID(iOSアプリのID)登録 [#n8450cbf] 以下の画面に移動し、 -Apple Developer Program のサイトにログイン -- ---> MemberCenter -- ---> Certificates, Identifiers & Profiles -- ---> iOS Apps の Identifiers -- ---> iOS App IDs [+] そこで、以下の入力項目を入力する。 **App ID Description [#yc243a2e] 以下の何れかを入力する。 -AppIDの説明 -AppIDそのもの -補足付きの短い文章 **App ID Prefix [#fc1e4929] 最近は、「App ID Prefix = Team ID」となっているらしい。 **App ID Suffix [#icf65ee1] [[Explicit App ID>#m8756407]] or [[Wildcard App ID>#e1f5e0a0]]のどちらかを選び、~ App ID Suffixとして、[[Bundle ID>#a7cecc1b]]を入力する。 ***Bundle ID [#a7cecc1b] この値(App ID Suffix)は、Xcodeで作成されたプロジェクトの~ 「Bundle Identifier」と一致している必要がある。 慣例的に自分のサイトのURLをひっくり返した名前が使われる。 -参考 --「Bundle Identifier Xcode」などでググるとイイ。 --Xcode7からのBundle Identifier定義~ https://blog.ikenie3.org/xcode7_bundle-identifier_setting/ ***Explicit App ID [#m8756407] -[[Bundle ID>#a7cecc1b]]を入力 -アプリ固有のAppIDを作成する場合 --アプリ内課金(アプリ内購入)するアプリ --iCloudなどのサービスを組み込むアプリ --配布用Provisioning Profileに紐付けたい場合 ***Wildcard App ID [#e1f5e0a0] -最後「*」で終わる[[Bundle ID>#a7cecc1b]]を入力 -開発専用など、どのアプリでも使用できるAppIDを作成する場合。 **App Services [#b016589c] 使える機能(Resources、外部機器m,MBaaSなどへのアクセスの可否)を選択する。 *デバイスID(UDID) [#ce2a61b0] **取得 [#be6bff9f] ***iTunes [#ia1cec02] -iTunesにデバイスを接続 -「概要」タブにある「シリアル番号」をクリックする。 -「識別子(UDID)」表示下で「編集」メニューの「コピー」クリックする。 -クリップボードにデバイスIDがコピーされる。 ***XcodeのOrganizer [#n768f338] -アプリケーション > Xcode -XcodeのWindowメニュー > Organizerを起動する。 -「Identifier」の欄に書かれている半角英数字の識別子をコピーする。 **登録 [#u8d6bc3e] -Apple Developer Program のサイトにログイン -- ---> MemberCenter -- ---> Certificates, Identifiers & Profiles -- ---> iOS Apps の Devices -- ---> iOS Apps Devices [+] --そこで、以下の入力項目を入力する。 ---1台登録 Register Device ---複数台登録 Register Multiple Devices *Provisioning Profile [#nfe52cd2] 不正な経路でのアプリケーションのインストールを防止する役割を持つ。 以下が埋め込まれている。 -App ID -開発者ID -デバイスID **作成 [#le5ca433] ***開発用 [#gf41bd91] -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]ボタン -次に、[[ProvisioningProfileをインストールする。>#c2d37f68]] ***配布用 [#te4ce87b] [[開発用>#gf41bd91]]との違いは、 -[Development]->[iOS App Development]を選択し、[Continue]ボタンではなく、 --Apple Developer Programの場合、~ [Distribution]->[App Store] or [Ad hoc]を選択し、[Continue]ボタンを押下する。 --Apple Developer Enterprise Programの場合、~ [Development]->[Distribution]->[AdHoc] or [In House]を選択し、[Continue]ボタンを押下する。 -[Select certificates]画面で、開発用 証明書を選択し、[Continue]ボタンではなく、~ [Select certificates]画面で、配布用 証明書を選択し、[Continue]ボタンを押下する。 -次に、[[ProvisioningProfileをインストールする。>#w28faa13]] **登録 [#vf5567f1] ***開発用 [#c2d37f68] -ダウンロードしたProvisioningProfile(develop.mobileprovision)をダブルクリックし、インストール。 -ProvisioningProfileの検証。 --ProvisioningProfileを、Xcodeのアイコンに重ねて開き、Organizerを確認する。 --左メニューの接続されているデバイス横のランプが緑になっている事を確認する。 --デバイス下の[Provisioning Profiles]を選択すると、登録されているプロファイルが表示される。 --「Valid profile」となっているか確認する。「Invalid」だと正しく登録されていない。 ***配布用 [#w28faa13] ダウンロードしたProvisioningProfile(xxxxxxx.mobileprovision)をダブルクリックし、インストール。 *参考 [#j9936aa4] -アプリケーションの配布に関するガイド (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 **パターン毎 [#ad3a1b06] ***Debug [#d375a0c0] -[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デバイス(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/ ***Ad-Hoc(限定目的) [#bbf604dc] -RBXBR » iOSアプリのAd-Hoc配布方法まとめ~ http://rbxbr.net/archives/1015 ***In-House(社内利用) [#p7ae31f0] -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 **実機・エミュレータ [#wfd3ff5e] ***[[iOSの実機]] [#n0243fb4] ***[[iOSのエミュレータ]] [#c237bf52] **開発ツール毎 [#rff4ffc4] ***[[Cordova - ビルドとデプロイ]] [#bd88a885] ***[[ReactNative - ビルドとデプロイ]] [#beeae3c6] ***[[Flutter - ビルドとデプロイ]] [#af49138a]