Help us understand the problem. What is going on with this article?

[mac] アプリの公証を受ける方法 (Notarized applicationのビルド方法) 

More than 1 year has passed since last update.

[mac] アプリの公証を受ける方法 (Notarized Applicationのビルド方法)

本文書の目的

macOSアプリケーションについて、Appleから公証を受ける方法について説明します。内容は、Appleの公開している「Notarizing Your App Before Distribution」の意訳・要約になります。内容に謝りなどございましたら、ご指摘お願いします。

実行環境・作成日時

作成日時: 2019.03.02
開発ツール: Xcode 10.1

概要

公証が受けられるソフトウェアの種類は以下です:

  • macOSアプリ
  • カーネルエクステンションなどの、非アプリケーションバンドル(Non-app bundle)
  • ディスクイメージ(UDIFフォーマット)
  • Flat installer package

公証は、ソフトのデベロッパIDが流出してしまった時に、ソフトのユーザを守るためにも使用できます。不法に改造されたソフトウェアが出回ってしまった時、Appleと協力してそれらのソフトの実行を不許可に出来ます。

公証を受けるための準備

  1. 配布するすべてのアプリケーション(executable software)に対してcode-signingを行います(参考リンク: [iOS 10] Xcode 8 の新しい Signing 機能について)。
  2. 実行時強化機能(Hardened Runtime capability)を有効にします。方法については、「Enable hardened runtime (macOS)」を参照してください。
  3. Xcodeのcapability設定で、Hardened Runtimeを有効にします。
  4. Developer IDを使ってアプリをビルドします。詳細については、「Create, export, and delete signing certificates」を参照してください。

AppleはWWDC 2018発表以前のソフトについても公証を受けることを推奨しています。詳細については、Notarize Your Pre-Existing Software を参照してください。

配布用ソフトの準備

  1. Open your Xcode project.
  2. Create an archive of your app.
  3. Open Xcode's Organizer window.
  4. In the Archives tab, select the archive you created.
  5. Click Distribute App to view the distribution options.
  6. Choose Developer ID for your method of distribution.
  7. Click Next.
  8. Choose Upload to send your archive to the Apple notary service.
  9. Click Next.

最後のクリックで、Xcodeは生成されたアーカイブをnortary serviceに送信します。nortary serviceは、アーカイブを検査します。検査には1時間くらいかかります。詳細については、「Upload a macOS app to be notarized」を参照してください。

トラブルシューティング

  • Hardened Runtime capabilityを有効にするとカスタムフレームワークがリンクできなくなりました。カスタムフレームワークをリンクする場合、それらはEmbedded Libraryとしてリングする必要がありそうです。

関連リンク

wheel
Steel Wheels Projectというプロジェクトで、主にMac/iOSデバイス向けのオープンソースソフトを開発しています
http://steelwheels.github.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away