以下の手順に(も参照Appleの開発者向けドキュメントとのBoltClockの答えAppleデベロッパプログラムや脱獄せずにデバイス上のテストiOSアプリを)、私はこのケースでは(iOSアプリをコンパイルすることができた来歴、ないビデオゲームコンソールエミュレータアプリAppleのガイドラインを満たし、AppleのApp Storeで許可されることはありません)Xcode 7で、個人のiCloudアカウントで署名し、iPhoneにサイドロードします(USBでMacに接続し、XcodeメニューでiPhoneを選択します->製品->宛先)、設定->一般->プロファイルでこの署名を使用してアプリを「信頼」することにより、携帯電話での実行を許可します。これにより、icloudアカウントに関連付けられた証明書がデバイスにインストールされます。
これらの手順を無線ダウンロードで複製したいと思います。Xcodeを入手して、iPhoneを持っているがXcodeでMacにアクセスできない兄弟と共有できる実行可能ファイルを作成できますか?
StackExchange Networkは、この質問で述べたように、モバイルデバイス管理を介したAppleのエンタープライズディストリビューションを使用して、iOSアプリベータプログラムで明らかにこのようなことを達成しました。BuildStore(http://builds.io/)もあります。これは、有料のApple Developer Programアカウントに関連付けられた「開発者チーム」にユーザーを追加することで、年間$ 10でこの機能を有効にします(Apple dev docsを参照) 。Xcode 7を使用すると、企業や通常の有料の開発者アカウントがなくても、こうしたことを実行できますか?
更新: Stackszaの助けのおかげで、私はいくつかの進歩を遂げました。
- XCodeはアーカイブ(製品->アーカイブ)を作成しますが、有料のADPアカウント層にサブスクライブせずに、アドホック配布のためにアーカイブを.ipaファイルにエクスポートすることはできません。
- ただし、コマンドラインのXcodeツールは、有料のADPアカウントがなくても.ipa実行可能ファイルを作成するため、問題はありません。次のようなコマンドを使用します
xcodebuild -exportArchive -archivePath Provenance-Release\ 11-20-15\,\ 22.24.xcarchive/ -exportOptionsPlist ~/manifest.plist -exportPath ~/Provenance
(Apple Developerアカウントなしでxcode 6でipaを作成する方法の Khawarの回答を参照してください)。 - ただし、このコマンドでは、マニフェストの.plistファイルを指定する必要があります。Over The Air(OTA)iOS IPA File Distribution for Publicでの Razvanの回答は?サンプルのmanifest.plistと、SSL Webページでホストする必要があるダウンロードリンクを提供するために必要なハイパーリンク形式の手順が含まれています。SSL URLはアプリのバンドルIDを計算する必要があるかもしれませんが、わかりません。
- ただし、上記は、アプリをダウンロードするデバイス用にアプリがプロビジョニングされており、デバイスに開発者証明書が既にインストールされている場合にのみ機能します。たとえば、以前にUSB経由でXcodeに接続されていたデバイスは、無線でアプリをダウンロードできるようになりました。これは素晴らしいことです。これは進歩です。しかし、クリーンなデバイスの場合、エラーが発生します
Could not install embedded profile: 0xe8008012 (This provisioning profile cannot be installed on this device.)
(デバイスのコンソールで表示され、Xcode-> Window-> Devices、またはApple Configuratorアプリで表示できます)。 - アプリがデバイスにプロビジョニングされるために、それは、デバイスのUDID含まれている必要があります
embedded.mobileprovision
ファイルを参照してくださいあなたはiOSのAppでプロビジョニングプロファイルを埋め込むかどう、どう、IPAのembedded.mobileprovisionにフィールドをチェック自動化しますか?、*。ipaファイルの作成に使用されたプロファイルを調べる方法 、およびビルドに含まれているUDIDを確認する方法はありますか?。ただし、このファイルを編集してUDIDを追加することはできません。ただし、アプリのCODESIGNATUREが一致せず、デバイスがエラーを報告するためです。Failed to verify code signature of /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7jBjpk/extracted/Payload/Provenance.app : 0xe8008017 (A signed resource has been added, modified, or deleted.)}
- わかりましたので、アプリを辞任する必要があります。Xcodeは、
codesign
これを実行できるコマンドラインツールを提供します。手順はipaファイルに再署名する方法にありますか?そしてIPA(iPhone)を辞任し、iPhoneアプリを辞任、新バンドルIDを挿入し、アップロードのためのXcodeのオーガナイザーに送信し、手動で新しいプロビジョニングプロファイルでIPAを再署名する方法。開発者証明書を指定する必要がありました。その正確な名前は、キーチェーンアクセスの[証明書]タブにあり、「iPhone Developer:username@mac.com(ABCDEFGHIJ)」のように見えます。その後、コマンドは次のようになりcodesign -f -s "iPhone Developer: username@mac.com (ABCDEFGHIJ)" Payload/Provenance.app
ます。上記の手順のコマンド例には、というフラグが含まれています--resource-rules
、しかし、コンパイルしたアプリでそのようなファイルを見つけられなかったので、そのフラグを削除しました。私はそれが何をするのか、それが必要かどうか疑問に思います。編集: Thomas Kollbachによる優れたブログ投稿「Inside Code Signing」では、--resource-rules
フラグを使用してアプリのどの部分に署名する必要があるかを説明していましたが、iOS8は非推奨であり、アプリ全体に署名する必要があるためです。 - アプリにUDIDが追加されて署名されたので、新しいデバイスにダウンロードする
Could not install embedded profile: 0xe8008003 (This provisioning profile is malformed
とエラーとが表示されA valid provisioning profile for this executable was not found
ます。今の問題は、デバイスがまだ開発者証明書をインストールしていないことだと思います。Xcodeを介してサイドローディングする場合、アプリを実行する前に、[設定]-> [全般]-> [プロファイル]でインストール済みの証明書を見つけ、証明書を選択して[信頼]をタップする必要があります。ただし、このオプションはアドホックアプリの無線ダウンロード後に表示されないため、続行する方法がわかりません。デバイスに開発者証明書をインストールする方法が必要だと思います。iOS 8.0.2でのプロビジョニングプロファイルのインストールによると、証明書をデバイスに電子メールで送信するだけで使用できましたが、iOS 8の時点では機能しなくなりました。私は確認しようとしませんでした。開発者証明書をiOSデバイスにリモートでインストールするにはどうすればよいですか? - iPhone開発者証明書をキーチェーンアクセスからエクスポートし、デバイスにメールで送信してみました。デバイスは証明書をインストールできましたが、署名されていないことを示す赤い警告が表示されましたが、Xcode / USBを介して証明書をインストールした場合、そのような警告はありませんでした。Rhythmic Fistmanによると、embedded.mobileprovisionファイルを再暗号化することは可能ですか?、動作するにはAppleがプロファイルに署名する必要があります。これがこだわりのポイントかもしれません。Appleは、有料のADPアカウントを持っている場合にのみ証明書に署名します。
- Sean Heberによるプロビジョニングに関するこのブログ投稿は、開発者証明書とプロビジョニングプロファイルの一般的な理論について非常に説明していました(Kollbachの場合は両方とも読む必要があります)。次の段落が含まれています。
これらがすべて機能し、安全である理由は、Appleがポータルでプロビジョニングプロファイルを生成し、それを配信する前に独自の秘密キーでそれらに署名するためです。プロビジョニングプロファイルの署名は、Appleだけができることです。したがって、ダウンロードしたファイルは、無効にすることなく改ざんすることはできません。無効なプロビジョニングプロファイルはiOSで受け入れられないため、Appleは、プロビジョニングプロファイルの署名へのアクセスを、開発者ポータルが最初に構成する許可を与えるものに制限するだけで、開発者がプロビジョニングできるものとできないものを正確に制御できますplace-プロビジョニングプロファイルは、ジェイルブレイクなしでは使用できない他の素晴らしいオプションをいくつでもサポートできますが。これが、テストデバイスをポータルに登録する必要がある理由です。ポータルなどに証明書を追加します-ポータル内のもの(したがってAppleが任意に制御および制限できるもの)のみを、生成され適切に署名されたプロビジョニングプロファイルに含めることができます。ポータルは、Appleのプロビジョニングポリシーと制限が実際に実施される場所です。
これは、私の質問(有料のADPアカウントなしでアプリを実行できますか)に「いいえ」で確実に答えているようです。この記事はXcode 7より前のものですが、Xcode 7はデバイスのUDIDをAppleポータルに送信し、そのUDIDを含むAppleが署名したプロビジョニングプロファイルを応答として受信するようです。Xcode 7は、デバイスがUSB経由で接続され、Xcodeによって認識された場合にのみこれを行いますが、Appleへの手動のXcode要求を作成できるかどうか疑問に思いますか?これはAppleのもののリバースエンジニアリングに深く入り込んでおり、おそらくToSなどに違反しているので、「いいえ」の答えに満足していると思います。
BuildStoreのaboutページによると、彼らは電子メールで似たようなものを管理しているので、それが可能かもしれません。
コマンドラインからのXcode「Build and Archive」はかなり古い(xcode 3頃)が、私が使っているxcrun
代わりに使うことを提案xcodebuild
する。