続・Electron製アプリが Mac App Storeで non-public APIの利用で rejectされる問題。解決しそう
AppStoreのレビュー通ったって
前回
Electron製アプリが Mac App Storeへの申請で non-public APIの利用で rejectされる問題
https://taku-o.hatenablog.jp/entry/2019/11/03/103422
Electronがnon-publicなAPIを利用していたので、
Electron製のアプリがみんなrejectされている問題があったのだけれど、
最新コードでAppStoreのレビューが通ったそうで、解決のメドがたったみたい。
https://github.com/electron/electron/issues/20027
もうちょっとで修正が利用できるようになるのでしょう。
https://github.com/electron/electron/pull/20965
でも、Electron 5以降が対象なんだ
Electronのバージョン4以下は、サポート打ち切られています。
当然修正は用意されない!
Electron 4用のPull Requestも作られたけど、
一瞬でcloseされたよ!!
https://github.com/electron/electron/pull/21003
私が使ってたのは3.1.9だったので、
このままでは修正が用意されないのですね。
Electron 3、Electron 4使っている人は、
Electronのバージョン上げましょうね。
というわけでElectron 5までバージョン上げたよ
というわけで、ここ数日は、
アプリで使っている
Electronのバージョンアップに励んでいました。
Electronを追っている人は知っていると思うけど、
Electronはバージョン上げて、すんなり動いたりしないのですよ。
自分の場合、3.1.9 → 5.0.12で、次のような問題があった。
(Electron 6への移行も検討してたので、Electron5用の対応と、Electron6用の対応が混在してるよ)
node-ffi が Node 12 でビルドできない
もっとも古いElectron 5でも、Node 12.0.0です。
# リリースノートから Upgraded to Chromium 73.0.3683.119, Node.js 12.0.0, and V8 7.3.492.27.
node-ffiというネイティブライブラリを実行できるモジュールがあり、
今までこれを利用していたのですが、
このライブラリはNode 12ではビルドできない。
開発が止まっている。
https://github.com/node-ffi/node-ffi
自分はいろいろ検討した結果、node-ffi-napiに移行しました。
とても良い感じ。
https://github.com/node-ffi-napi/node-ffi-napi
menu item role
Electronのメニュー定義のrole定数が大文字小文字で変わっていたり。
こんな感じであちこち。
Typescriptでコンパイル時にエラーになってた。
# 抜粋 - {role: 'zoomin'}, - {role: 'zoomout'}, - {role: 'resetzoom'}, + {role: 'zoomIn'}, + {role: 'zoomOut'}, + {role: 'resetZoom'}
Spectron
remote-debugging-portを指定しないと、
Spectronのテストコードが動作しなくなった。
# 抜粋 describe('dictWindow', function() { this.timeout(10000); before(function() { this.app = new Application({ path: 'App-darwin-x64/App.app/Contents/MacOS/App', chromeDriverArgs: ['remote-debugging-port=9222'], ←←←←←← これ! env: {DEBUG: 1, NODE_ENV: 'test'}, }); return this.app.start(); });
electron-packager
electron-packagerでアプリパッケージを作っているのですが、
Electron 6あたりで、Electronの作りが結構変わっているようですね。
古いバージョンのelectron-packagerを使っている人はアップデートが必要でしょう。
https://github.com/electron/electron-packager
一部ファンクションが非同期になってた
例えば、
dialog.showMessageBox
これが同期から非同期処理になってたり。
そういう変更は、リリースノートの
Breaking Changesの項に置いといて欲しい。
ばっちこい
準備完了だ。
はやくこいこいアップデート。