web-dev-qa-db-ja.com

Xcodeで公証のためにdmgファイルをアップロードする方法

既存のアプリをApple公証のためにアップロードしようとしています。

文書によると https://help.Apple.com/xcode/mac/current/#/dev88332a81e アプリをxcodeアーカイブオーガナイザーで開かなければなりません。

Jenkinsビルドサーバーから生成されたdmgファイルがあります。 xcodeでdmgファイルを開いてアップロードするにはどうすればよいですか?

また、公証に使用できるコマンドラインツールはありますか?

10
laocius

コマンドラインから実行できます。

最初に、.dmgから.appを抽出して再署名し、プロセスのcom.Apple.security.get-task-allow資格を削除する必要があります(これはデバッグをサポートするためにビルドによって自動的に追加され、通常アーカイブによって削除されます-公証サービスが勝ちましたただし、その資格を持つパッケージは受け入れないため、削除する必要があります)。

使用する.entitlementsファイルは、空のファイルでもかまいません。

また、--options runtimeの使用にも注意してください。これは、アプリが強化されたランタイムでビルドされたことを示し、必須です。

codesign -f -s "Developer ID Application: Name (ID)" --entitlements my-entitlments.entitlements --options runtime MyApp.app

次に、.appを.dmg内に再パッケージ化し、それを再署名する必要があります。

(ここでも--options runtimeフラグを使用していますが、必要かどうかはわかりません)

codesign -s "Developer ID Application: Name (ID)" MyApp.dmg --options runtime

次に、altoolを使用して.dmgを送信します。

(ユーザー名とパスワードは、開発者ポータルのmacOSチームの誰かである必要があります)

xcrun altool --notarize-app -f MyApp.dmg --primary-bundle-id my-app.myapp -u username -p password

アップロードが成功すると、トークンが返されます。

RequestUUID = 28fad4c5-68b3-4dbf-a0d4-fbde8e6a078f

次に、そのトークンを使用して、altoolでステータスを確認できます。

xcrun altool --notarization-info 28fad4c5-68b3-4dbf-a0d4-fbde8e6a078f -u username -p password

最終的に、成功または失敗します。確認し続けてください。応答の「ステータス」フィールドを確認します。これは「成功」です。応答には、エラーのトラブルシューティングに使用できるログファイルも含まれます。

成功すると仮定して、アプリに公証をホチキス止めする必要があります。

xcrun stapler staple MyApp.dmg

そして、spctlで検証します:

spctl -a -v MyApp.app

MyApp.app:受け入れられました

source =公証された開発者ID

また、検疫フラグを.appに適用して起動しようとすると、新しいGatekeeperダイアログが表示されます。

xattr -w com.Apple.quarantine MyApp.app
19
TheNextman