文書の過去の版を表示しています。
<markdown> # sign & notarize
ここでは[electron](../electron)で作成した自作の野良アプリにコード署名・公証を行う手順を記述する。署名と公証がなくてもビルドしたマシンでは問題なく起動できるが、他のMacで起動するのに必要になる。
## 前提
- Macを所有していること - Apple Developer Programに加入していること(有料)
## 署名用の証明書を準備
1. xcodeを起動して、settings… を選択 2. Accountsを選択、左下の+をクリックして Apple IDを追加 3. Teamを選択(Roleがadminのものを選択)し、Manage Certificate… をクリック 4. 左下の + から `Developer ID Application`を選択するとコード署名用の証明書が作成され、keychainに追加される
Account HolderでAdminロールのTeamを選択しないと`Developer ID Application`が出てこないかも・・・
## app-specific passwords(App用パスワード)の取得
1. Apple IDサイトにログイン (https://appleid.apple.com/account/manage) 2. 「サインインとセキュリティ」を選択 3. 「アプリ用パスワード」を選択 4. アプリ名を入力して「作成」する
Apple Developerのサイトではなく、非開発者向けのApple IDサイトで取得するので間違わないように
## Team IDを確認
1. Apple Developerにログイン(https://developer.apple.com/account) 2. 「メンバーシップの詳細」に移動 3. チームIDを確認
## ビルドと署名、公証を行う
electron forge, electron builderなどのツールがあるが、ここでは最もシンプルなelectron packagerを使う
electron-packagerとdotenvをインストール
``` npm install –save-dev @electron/packager dotenv ```
build.jsを作成
```javascript const packager = require('@electron/packager'); const dotenv = require('dotenv'); dotenv.config();
packager({
out: 'dist', dir: '.', overwrite: true, executableName: 'MyApp', appBundleId: process.env.APP_BUNDLE_ID, platform: 'darwin', arch: 'arm64', osxSign: {}, osxNotarize: { appleId: process.env.APPLE_ID, appleIdPassword: process.env.APPLE_ID_PASSWORD, teamId: process.env.APPLE_TEAM_ID, }
}); ```
.envファイルを作成(これをgitにコミットしないように)
``` APP_BUNDLE_ID='バンドルID、一般的にはドメイン逆順+アプリ名、例 moe.nullpon.MyAppName'
APPLE_ID='自分のApple ID' APPLE_ID_PASSWORD='App用パスワード (Apple IDのパスワードではない)' APPLE_TEAM_ID='チームID' ```
実行
``` node build.js ```
これでビルド、署名、公証まで行われる。
packagerは内部でcodesignコマンドを呼んでいるようで、コマンドが証明書にアクセスする時にログインパスワードを入力する必要がある。これは1度ではなく何回も発生するので、常に許可をしてしまった方がいいかも
署名の確認
``` codesign -dvvv MyApp.app ```
公証の確認(以下のコマンドでacceptedと出ればOK)
``` spctl -avvv MyApp.app ``` </markdow n>