web-dev-qa-db-ja.com

エンタープライズアプリの展開がiOS 8.1.3にインストールされない

IOS 8.1.3を更新した後、ダウンロードしようとしましたが、「アプリをダウンロードできません」および「現時点ではインストールできませんでした」というエラーが表示されます。

8.1.2と8.1.3の間で考慮すべき変更点は何ですか?

ダウンロードモード:
<a href = "itms-services://?action = download-manifest&url = https://****.plist">

ありがとう!

34
Santiago

Braincellsを障る数時間後に、ここで私はそれをやった方法は次のとおりです。

注:現在、これをiOS 8.1.2以前でテストしていません(注意して進めてください!)

既に自社の企業証明書で署名されているアプリの場合、あなたがしなければならないことは(RAStudiosの編集で言及されているように)manifest.plistを編集することだけです:

前:

<key>bundle-identifier</key>
<string>uk.co.acme.AcmeApp</string>

後:

<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>

サードパーティによって署名されたアプリの場合エンタープライズ証明書を使用して再署名すること(このチュートリアルでは、ipaファイルがAcmeApp.ipaであると仮定し、資格ファイルはentitlements.plistおよびプロビジョニングプロファイルですはprovProvile.mobileprovisionです。すべてのファイルはデスクトップフォルダー(Mac OSX)にあり、S836XXACMEはチーム識別子です):

新しいentitlements.plistファイルを作成します。

<?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>application-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
<key>get-task-allow</key>
<false/>
</dict>
</plist>

Ipaを解凍します。

cd ~/Desktop

unzip AcmeApp.ipa 

コード署名を削除します。

rm -r Payload/AcmeApp.app/_CodeSignature/ 

Mobileprovisionファイルをコピーします。

cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision 

コデザイン:

codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app

辞任したIPAとして圧縮します。

Zip -qr AcmeApp_resigned.ipa Payload/

また、前述の「ALREADY」署名部分に従ってmanifest.plistファイルを修正する必要があります。

<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
34

調査後..

編集: 。さらにテストの後、私は単にIOSの8.1.3に空中アプリケーションをインストールするために働いInfo.plistバンドルIDとmanifest.plistバンドルIDと一致することを見出しこのソリューションは仕事をしない場合、以下のソリューションを試してみてください。


オリジナルソリューション

問題の修正:

あなたのアプリケーションは、アプリケーションの正しい有効なバンドル識別子を含む有効なentitlements.plistを、持っている必要があります。

あなたはiOSの開発の証明書で署名されたアプリケーションを配布する場合は、ここでは、あなたのアプリに含まれている必要がありentitlements.plistの一例です。

<?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>application-identifier</key>
    <string>com.yourbundleidhere.mycoolapp</string>
    <key>com.Apple.developer.team-identifier</key>
    <string>com.yourbundleidhere.mycoolapp</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>com.yourbundleidhere.mycoolapp</string>
    </array>
</dict>
</plist>

ワイルドカードプロファイルを使用している場合は、com.yourbundleidhere.mycoolappyourwildcardappid.*交換してください。どちらの場合でも、iResignを使用してアプリケーションを適切に再署名し、現在必要なentitlements.plistを含めることができます。

問題の説明

セキュリティパッチのためには、(参照 ここ CVE-2014から4493の下)、entitlements.plistせずに、アプリケーションがインストールされません。セキュリティパッチは、アプリケーションが既存のアプリを上書きして、その上にインストールしたり置き換えたりするのを防ぎます。

8
iPwnTech

私はこれでかなりの数の実験を行ってきました。私の経験ではmanifest.plistファイルにバンドル識別子は、実際には重要ではありません。行うための最も重要なことは、entitlements.plistが正しい取得することです。

むしろこれを手動で作成するよりも、私は次のスクリプト( クレジット )を使用してプロビジョニングプロファイルからそれを生成するお勧めします:

# Create an entitlements file
# parse provision profile
security cms -D -i "provProfile.mobileprovision" > ProvisionProfile.plist 2>&1

# generate entitilements.plist
/usr/libexec/PlistBuddy -x -c "Print Entitlements" ProvisionProfile.plist > Entitlements.plist 2>&1

その後、協調設計ユーティリティの--entitlementsオプションを指定して、この資格ファイルを使用することができます。

6
JohnGom

私はこの問題を解決しました。

  1. Appleはプロビジョニングプロファイルを変更したため、プロビジョニングプロファイル(ファイル1)を更新し、「Payload /」にコピーしてください。
  2. 必ず「ペイロード/」、およびこのplistファイル内Entitlements.plist(ファイル2)がありますしなければならないテキストエディタで作成されたことPLAIN TEXT
  3. 確かにあるInfo.plistファイル(ファイル3)があります確認し、「ペイロード/」、これはXCodeのによって作成されます。
  4. Entitlements.plist(ファイル4)を「Payload /」以外の場所にコピーします。
  5. ファイル1-4の「バンドル識別子」が同じであることを確認してください。
  6. このEntitlements.plist(ファイル4)を使用して、IPAファイルに再署名します。

このように辞任できます

codesign -fs "iPhone Distribution: Your Company Name" --entitlements=/Users/SenTR/Downloads/codesign/Entitlements.plist /Users/SenTR/Downloads/codesign/Payload/Your_Project_name.app

Entitlements.plistサンプル

<?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>application-identifier</key>
        <string>PREFIX.yourappBundleID</string>
        <key>aps-environment</key>
        <string>production</string>
        <key>get-task-allow</key>
        <false/>
        <key>keychain-access-groups</key>
        <array>
            <string>PREFIX.yourappBundleID</string>
        </array>
    </dict>
</plist>

あなたが中国語を知っているなら、これは役に立ちます。

http://hennry.com/2015/03/fail-to-resign-ipa-since-ios8/

0
Hennry

マルコ@とRaStudioの答え@に加えて、私は「ダウンロードアプリケーションにできません」というメッセージのための2つの原因を見てきました。一つは、iOS 8.1.3の新機能です。

IOSの8.1.3の新故障原因

期限切れのプロビジョニング・プロファイルを持つアプリケーションをインストールしようとすると、このエラーが発生します。アプリケーションに署名する場合、証明書とプロビジョニングプロファイルの両方が有効でない期限切れでなければなりません。アプリケーションがプロファイルと非期限切れの証明書は、いくつかの状況でのiOS 8.1.2にインストールすることができ、プロビジョニングの有効期限が切れているかのように思えます。 provisiningプロファイルは Appleのデベロッパーセンター に行くことによって有効期限が切れていないことを確認してください。

旧故障原因

デバイスは、 Appleのデベロッパーセンター での開発provisiningプロファイルに追加されていない場合開発用証明書とプロビジョニングプロファイルを使用して署名されたアプリケーションをダウンロードしようとすると、このエラーが発生します。

Ensure device is added to provisioning profile

0
Joel Jeske

私は同じ問題を持っており、これはどんな資格を持っていないアプリケーションのために起こります。

資格を持つアプリを再署名する私のための問題を解決しますが、これはすでに必要性が再署名して展開されるように配備されているすべてのアプリケーションなどの痛みになるだろう。

私のために失敗したこれらのアプリケーションは、キーチェーン共有やプッシュ通知のようなものを使用していないので、(私の理解あたりとして)すべての権利を必要としないので、これは奇妙な問題です。

0
Arun Vishnu

私はこれに答えてきた ここでは 、これは他に何もすることなく、私のために働きました

0
Sisira