web-dev-qa-db-ja.com

資格を使用してアプリを辞任するにはどうすればよいですか?

辞任する必要のある.ipaファイルがあります。 objc.io blog で説明されているようにやってみました:

$ codesign -f -s 'iPhone Developer: Thomas Kollbach (7TPNXN7G6K)' Example.app

しかし、これでは不十分です。 codesignを実行すると、次のようになります。

$ codesign -d --entitlements - Example.app/Example
Executable=/Users/myuser/Payload/Example.app/Example

エンタイトルメントがリストされていません。

しかし、私がcodesign -d --entitlements xCodeからの元のIPAファイルで:

<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>UFAYDHAUP.com.company.example</string>
    <key>aps-environment</key>
    <string>production</string>
    <key>beta-reports-active</key>
    <true/>
    <key>com.Apple.developer.team-identifier</key>
    <string>UFAYDHAUP</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
        <string>UFAYDHAUP.com.company.example</string>
    </array>
</dict>
</plist>

私は以下の行を試しました

 codesign --entitlements Example.app/archived-expanded-entitlements.xcent -f -s 'iPhone Developer: Thomas Kollbach (7TPNXN7G6K)' Example.app

ただし、次のキーは含まれていません。

  • beta-reports-activ
  • get-task-allow

では、どうすればこれを行うことができますか?エンタイトルメントファイルがありません。xCode7では、機能をチェックするだけです。そして、私が持っているのはAppleプッシュ通知だけです。

最後に私の要件を明確にするために:

  1. XCodeがエクスポートするものと比較して、アプリIDを変更したり、異なるプロビジョニングプロファイルやコード署名IDを使用したりすることはありません。
  2. メインの実行可能ファイルのみがツールで変更されるため、辞任が必要です。
6
Erik Engheim

答えは、実際には質問自体で非常に自明です。からの出力:

$ codesign -d --entitlements - Example.app/Example

実際には完全に有効な資格ファイルです。したがって、次のように記述して、xCodeからエクスポートされた元の.ipaからの出力を保存できます。

$ codesign -d --entitlements entitlements.xml Example.app/Example

これにより、エンタイトルメントがentitlements.xmlに保存され、引数で使用して.ipaファイルに自分で署名できます。

codesign --entitlements entitlements.xml   -f -s "iPhone Distribution: Company (UFAYDHAUP)" Payload/Example.app

当然、「iPhone Distribution:Company(UFAYDHAUP)」は、使用する署名IDに置き換える必要があり、Payload/Example.appは、.ipaファイルから解凍されたアプリへのパスになります。

9
Erik Engheim

それは私を助けました:

--preserve-metadata=entitlements

エンタイトルメントの保存と復元はもう必要ありません。

0
ZevsVU