私のクライアントには、アプリ内購入、ゲームキット、プッシュ通知が有効になっているiOSアプリがあり、現在アプリストアにあります。社内のエンタープライズ配布証明書を使用してアプリケーションを辞任し、内部でテストしたいのですが、元のプロビジョニングプロファイルに関連付けられたサービスをテストすることはできます。これは可能ですか?
4 に答える
私はこれをやることになりました、それは:-の組み合わせです
と
1)資格リストを作成し、キーチェーンなどの問題を防ぎます
<?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>
2)IPAを解凍します
unzip Application.ipa
3)古いコード署名を削除します
rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true
4)埋め込まれたモバイルプロビジョニングプロファイルを置き換えます
cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"
5)辞任
/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/Application.app"
6)再パッケージ
zip -qr "Application.resigned.ipa" Payload
@Koko Carlが言ったことよりも少し簡単にアプリを辞任するために、 https: //gist.github.com/Weptun/5406993にあるfloatsignスクリプトを採用しました。プロセスを本当に簡単にします:
sh floatsign.sh ~/Downloads/File.ipa "iPhone Distribution: CertificateName" -b new.bundle.id -p /Path/To/Profile/Appstore.mobileprovision App-resigned.ipa
Koko Carlの応答に少し追加するために、手順5(辞任)に到達したときにcodesign_allocateで問題が発生した場合は、シェル変数CODESIGN_ALLOCATEをエクスポートして、iPhoneSDK内のcodesignallocateへのパスを指定してください。これを行うには、xcodeコマンドラインツールがインストールされていることを確認してください(Xcodeの設定/更新)
たとえば、次のエラーが発生していました。
me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app"
出力:
Payload/MyApp.app: replacing existing signature
codesign_allocate: object: /Users/mimio/Downloads/Payload/MyApp.app/MyApp malformed object (unknown load command 33)
Payload/MyApp.app: object file format unrecognized, invalid, or unsuitable
これを解決するために、次のように変数を設定します。
me$ export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
そして、もう一度私のコマンドを実行しました:
me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app"
そして出来上がり!新しいcodesign_allocateですべてが正しく機能しました
検索すると、これはスタックオーバーフローに表示される最初の質問です。そのため、最新のiResign macアプリで更新したかったのです。これにより、ターミナルのコマンドの代わりにGUIを使用して作業を非常に簡単に行うことができます。
iReSign
iReSignを使用すると、iDeviceアプリバンドル(.ipa)ファイルを、配布用にAppleからのデジタル証明書を使用して署名または再署名することができます。また、.xcarchiveファイルから署名付きiDeviceアプリバンドル(.ipa)ファイルを作成することもできます。このツールは、アプリに署名する人がアプリを開発する人とは異なる場合に、企業の展開のために企業ユーザーを対象としています。
使い方
iReSignを使用すると、暗号化されていないipaファイルに、対応する秘密鍵を保持している証明書を使用して再署名できます。iResignは、xcarchiveファイルから署名付きipaファイルを作成することもできます。
署名されていない.ipaまたは.xcarchiveファイルを一番上のボックスにドラッグするか、参照ボタンを使用します。
キーチェーンアクセスからの完全な証明書名を入力します。たとえば、下部のボックスに「iPhone Developer:Firstname Lastname(XXXXXXXXXX)」と入力します。
ReSignをクリックしてください!そして待ちます。辞任したファイルは、元のファイルと同じフォルダに保存されます。