0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Mac os X 向けappを公証(ノータリゼーション)をする方法。

Last updated at Posted at 2023-10-06

※この記事は、ios向けの記事ではありません。
Mac os x app開発における公証についてまとめた記事になります。
記事の後半に、PyinstallerでinstallしたPython appを公証する方法も載せてます。

公証をしないと?

公証をしないと、Gatekeeperによって怪しい警告文が表示されたり、
そもそもアプリが起動しなかったり。
macOS Mojave以降で実行するAppに必要ぽい。
ユーザーの信頼を高めることが可能なので、やった方がいいらしい。
https://developer.apple.com/jp/developer-id/

公証のやり方は?

Xcodeで簡単に出来ます。
メニューバーから、Product -> Archive を選択。
Archive終了後、リストからArchiveしたappを選択し、Distribute app を選択。
Developer ID -> Upload .. その後は基本的にNext
その後時計アイコンが表示されるviewになるので、
その後は☑️マークがつくまで待機するという形になります。

⭐️注意
公証を受ける前に、Hardend Runtimeを有効にする必要があります。
こちらをしないと、公証を受けることができません。
Signing & Capabilities から 右上の+ボタンを押下し、Hardend Runtimeを追加するだけで基本的にOK。
↑Pythonやその他の子プロセスを導入している場合は、さらに追加の設定が必要です。

公証にかかる時間は?

数分程度で終わります。
意外と早いです。

公証済みかどうか確認する方法は?

Apparency というアプリを使用して簡単に確認することができます。
https://mothersruin.com/software/Apparency/

子プロセスに対して、HardendRuntimeはどう有効にする?

筆者が遭遇した問題になります。
着手したプロジェクトは、Mac向けappが大枠としてあり、
その中に子プロセス(Python)が組み込んであるという構造でした。

この作りでどこが問題になるかというと、
先述したHardend Runtimeを子プロセスで有効にするにはどうやんの?
という壁にぶつかりました。
PyinstallerでinstallしたPythonをどう公証するか。ということですね。

どうやった?

コード署名と、Hardend Runtimeを有効にする必要があります。
そのためには、

1.entitlements.plistを作成する。
2.証明書のDeveloperIDを控えておく。
3.そのplistと、証明書をappに対して当ててやる。

※1.entitlements.plistの追記内容
entitlements.plistはXcodeから作成することが可能です。
Xcodeから作ってやらないとエラーが発生することがあるみたいです。。

<plist version="1.0">
  <dict>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
    <true/>
  </dict>
</plist>

※2 証明書確認
実行結果の"Apple Development"の箇所をコピー

security find-identity -p basic -v

※3 実行コマンド

codesign --deep --force --options=runtime --entitlements "あなたのentitlements.plistのパス" --sign 
"Apple Development: hoge tarou (XXXXXXXXX)" --timestamp "あなたのpython appのパス"

entitlements.plistがめちゃ重要なようで、
これを作らないとPythonが全く動かなる現象にあい、どん詰まりしました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?