4

アドホック ビルドの無線 (OTA) 配布に問題があります。ベース SDK 6.1、デプロイメント ターゲット 5.0、ア​​ーキテクチャ armv7 および armv7s を使用したユニバーサル iPhone/iPad アプリの構築。まったく同じアドホック ビルドは、iOS 6 デバイス (3 つの異なる iPhone5、1 つの iPhone4 および iPad2) に OTA をインストールしますが、iOS 5 デバイス (iPhone4S および iPad1) には OTA をインストールできません。

OTA は、すべての MIME タイプが適切に設定された IIS 経由で行われます (そうしないと、iOS 6 では失敗します)。

iOS 5 デバイスでは、インストールが開始され、プログレス バー付きのアプリ アイコンが表示されます。最初のタイトルは「待機中...」で、次にアプリ名に変わり、警告ビューが表示されます。

アプリケーションをダウンロードできません

現時点ではダウンロードできませんでした。

完了/再試行

オーガナイザーでログを表示するためにデバイスを Xcode に接続しました。コンソールには次のものがあります。

apsd[48] : : ストリーム エラーが発生しました: エラー ドメイン = NSPOSIXErrorDomain コード = 61 「操作を完了できませんでした。-接続を拒否しました-」-UserInfo-=-0-x-1-4- 7-0-8-0 -{-}

「-」文字も含めて、そのとおりです。

iTunes 同期を介して同じ iOS 5 デバイスに同じアドホック ビルドをインストールすると、期待どおりに動作し、エラーは発生しません。

アカウントの種類は、Enterprise ではなく「プレーンな」開発者アカウントです。

すべてのプロビジョニング プロファイルを最初から作成しようとしました。まだ新しい証明書を削除して作成しようとしていませんでした。必要でないことを願っています。

アプリは iCloud や Pushes などを使用しません。Entitlements.plist はバンドルに含まれていません。

アプリが CocoaPods でビルドされているという事実に言及することが重要かもしれません - Pods ターゲットとして構築されたサードパーティ ライブラリの束。

4

5 に答える 5

3

さて、あなたは確かに実際の理由が何であるかを知ることに驚くでしょう.

結局、すべての証明書を取り消し、プロファイルを削除し、CSR からビルド環境のセットアップまでを行いました。資格や「get-task-allow」などを試してみました。しかし、どれもうまくいきませんでした。

ある時点で、配布に使用される IIS サーバーと plist ファイルをもう一度見てみることにしました。では、問題は plist ファイルにありました。iTunes のアートワーク イメージ ファイルは「iTunesArtwork.png」という名前で、 plistファイルの URL はhttp://hostname/Mobile/iOS/iTunesArtwork.

そのため、ファイルの名前を「iTunesArtwork」(拡張子を削除)に変更しましたが、問題は解決しませんでしたが、インストールの進行状況バーがほぼ最後になり、ステータスメッセージが「ダウンロード中」から「インストール中」に変化することがわかりました。その前は、「待って」と言った直後に、最初に失敗しました。

最後に、ファイルに「iTunesArtwork.png」という名前を付け、URLを次のように修正しました。http://hostname/Mobile/iOS/iTunesArtwork.png

そして、それが機能したときです。

次の説明しか思いつきませんでした。

インストールを開始する前に、iOS は plist 内のすべての URL が有効なリソースを指しているかどうかを確認します。いずれかが失敗した場合、iOS 5 はインストールを中止しますが、iOS 6 は少なくとも無効なアートワーク URL を許容できます。

インストール中、iOS は最初にアプリ アイコンを取得して画面に表示し、次に ipa ファイルをダウンロードし、最後にアートワークを取得します。ここでも、iOS 5 にはより厳格な検証規則があり、「iTunesArtwork」のような名前は好きではありません。拡張子のないファイル名は好きではないと思います。アートワークの取得に失敗すると、iOS 5 へのインストール全体が中止されます。iOS 6 は、この段階ではエラーを無視しているようです。

個人的には、iOS 5 が正しい方法でそれを行っていると思います。すべての URL が有効で、すべてのファイルの拡張子が適切であることを検証することをお勧めします。両方の iOS バージョンが同じ方法で行った場合、最初に問題に出くわすことになります。

UPD

Mac OS X 10.8で実行されているApache Webサーバーのセットアップを試しました。IIS とは異なり、apache を使用すると、iOS 5 は不足している拡張機能を非常によく許容するため、iOS 5 だけでなく、iOS 5 と IIS の組み合わせがすべての問題を引き起こしていることは確かです。

ただし、アートワークの代わりに plist のようなものを入れるhttp://hostname/Mobile/iOS/NoSuchFileと、iOS 5 は OTA のインストールに失敗しますが、iOS 6 は何も気付かずにインストールを続行します。

于 2013-02-18T00:59:02.883 に答える
2

資格ファイルをプロジェクトに追加し、その「get-task-allow」を「NO」に設定します。それを行うまで、同様の問題がありました。OTA は機能する場合と機能しない場合があります。Apple は資格ファイルがなくても動作するはずだと言っていますが、それはもはや当てはまらないようです。

通常の開発/デバッグのために、「get-task-allow」を「YES」に戻してください。

参考までに、資格ファイルの内容を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)com.yourCompany.yourAppname</string>
    </array>
    <key>get-task-allow</key>
    <false/>
</dict>
</plist>

もちろん、「yourCompany.yourAppname」をアプリ識別子に置き換える必要があります。

于 2013-02-15T16:52:55.420 に答える
1

私はdiawiまたはtestflightでこの問題に遭遇しました。動作しなくなったら、デバイスに部分的にダウンロードされたアプリを消去する必要があります。

ipaの前に証明書を送信してインストールしようとしましたか?

于 2013-02-16T00:32:53.087 に答える
1

私の経験から、私たちの多くが経験したこの問題に対処するためのいくつかの手順があります。

  1. デバイスの UDID がプロビジョニング ポータルに登録され、署名しているプロビジョニング プロファイルにリンクされていることを確認します。

  2. アプリに署名する前に (「アーカイブ」オプションを使用してコンパイル中に)、使用可能な最新のプロファイルに更新します。おそらく、オーガナイザーに表示されている古いプロファイルを消去し、下部にある「更新」を押して、開発者アカウントにログインします。 .

  3. 署名 ID を「配布」 (アドホック) に設定します。これは、「ビルド」を使用してコンパイルし、Diawi などのサービスにアップロードする場合に少なくとも役立ちます。Diawi のようなサービスを使用する場合は、署名したモバイル プロビジョニング プロファイル (アドホック プロファイル) をアップロードし、アプリケーションをインストールする前に、Diawi が提供するインターフェイスを介してユーザーにインストールしてもらいます。

  4. 「開発」プロファイルではなく、アドホックな「配布」プロファイルでアプリに署名します。これは非常に重要です。

頑張ってください!

于 2013-02-17T19:36:46.123 に答える
0

これを試して、xcode でプロジェクトを除くすべてのサードパーティ ライブラリを選択し、ビルド設定でスキップ インストールを yes に設定します。

于 2013-02-15T16:27:30.570 に答える