5

つまりね..

シナリオ:

XCodeを使用したアーカイブ+共有プロセスの結果として取得したipaファイルを取得しました。ipaファイルはアドホック配布証明書を使用して署名されており、問題なくインストールできます。

アプリケーションは、作成したビルドを使用して問題なくアクセスできるキーチェーンにいくつかの情報を保存します。

その後、applicaction.appパッケージにいくつかの変更を加えた後、Enterprise配布証明書を使用してcodesignコマンドを使用してアプリケーションに再署名します。この変更には、info.plistファイルからのアプリケーションの名前とバンドルIDの変更が含まれます。もちろん、埋め込まれたモバイルプロビジョニングプロファイルを新しい証明書と一致するものに置き換えます。

問題:

すべてを辞任した後は大丈夫のようですが、インストールと機能は問題なく機能しているようです。キーチェーンに保存されている情報を入力すると、アプリを閉じるたびにデータが読み込まれたり、キーチェーンから消去されたりしないようです。

なぜこれが起こっているのかという考えは?

4

2 に答える 2

8

私はこの問題を何時間も検索しました...これが解決策であり、アプリの辞任が私たちのアプリでどのように機能したかです。お客様からIPAファイルを受け取り、証明書を使用して辞任しました。キーチェーンへのアクセスは機能します。この場合、bundle.idは変更されていません。

必要なファイル:

  • MyApp.ipa
  • MyApp_EnterpriseDistribution.mobileprovision(エンタープライズディストリビューションプロビジョニングプロファイル)
  • Entitlements.plist

すべてのファイルは同じディレクトリにあります。ファイルが別のフォルダーにある場合は、コード内のパスを変更する必要があります

まず、「Entitlements.plist」を作成します。txtファイルを作成し、次のコードを入力します。アプリケーション識別子を入力します。

<?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>GBA9L2EABG.com.your.bundle.id.MyApp</string>
    <key>get-task-allow</key>
    <false/>
</dict>
</plist>

このファイルを保存し、名前を「Entitlements.plist」に変更します

ターミナルを開き、フォルダーに移動してこのコードを実行し、「MyApp」をアプリ名に、「NAME OF YOUR ...」を証明書の名前に、「MyApp_EnterpriseDistribution」をプロビジョニングファイルに置き換えます。

unzip MyApp.ipa

//we didn't used the following, maybe necessary...
//rm -r "Payload/MyApp.app/_CodeSignature" "Payload/MyApp.app/CodeResources" 2> /dev/null | true

cp MyApp_EnterpriseDistribution.mobileprovision Payload/MyApp.app/embedded.mobileprovision

codesign -f -s "iPhone Distribution: NAME OF YOUR DISTRIBUTION CERTIFICATE" --resource-rules Payload/MyApp.app/ResourceRules.plist --entitlements Entitlements.plist  Payload/MyApp.app

zip -qr MyApp-resigned.ipa Payload/

そして今、あなたはあなたの証明書を持ったIpaを持っています。

ヒント:この名前の証明書は、キーチェーン内で一意である必要があります...

于 2012-11-29T10:07:30.967 に答える
4

わかりました、これが私たちのために働いた解決策です。

これはエンタープライズビルドであるため、アプリIDがAppleのサイトに入力されたものと一致するようにEntitlements.plist/dist.plistファイルを変更する必要がありました。エンタイトルメントファイルは、codesignユーティリティで提供できます。

これらの手順を使用しますが、エンタイトルメントファイルが完全なアプリIDと一致することを確認します。これには、シードID+バンドルIDが含まれます。

IPAに再署名する(iPhone)

アプリはそれがなくても正常にインストールされますが、これにより、キーストアが適切な権限でアクセスされていることが保証されます。

于 2011-08-24T17:22:34.460 に答える