Contents
看到了這篇 blog文章 – You Cannot Submit an Electron 6 (or 7) App to the Apple Store
為何會想解讀這篇文章?
最主要的原因是小編目前也有使用 Electron 開發一些自動化工具,雖然沒有發佈到 App Store,但是看到這個新聞標題難免會擔心 – 會不會以後 Apple 也會禁止在 Mac OS 中使用非 Apple 官方技術開發軟體,但是仔細閱讀完後,這個擔心是多餘的,Apple 還沒霸道到這種地步
第二個原因是,Javascript 是小編近三年來比較專心在使用的程式語言 ,小編專長的程式語言其實是 C/C++/Objective-C/Java 這種編譯式程式語言,我想這種使用編譯式程式語言的程式設計師應該都會很討厭 Javascript XD ,但是不得不承認 Javascript 無所不在,無論是寫網頁程式的後端或是前端,甚是行動 App 都可以用 Javascript ,Electron 就是一種可以使用 Javascript 開發跨平台桌面應用程式的框架。
問題出在 Electron 去呼叫到 none-public API/Framework
通常 App 被退回後,Apple 會告訴你被退回的原因,這位開發者就列出了 Apple 審核人員列出了一些他的 App 使用到了一些 none-puble Framework ,Apple 也蠻好心的,如果問題發生在你使用的第三方程式庫而且沒有 source code ,你可以用以下指令去檢查編譯過的二進位檔案
- 使用 strings 命令列指令 – 可以輸出程式庫呼叫的方法列表
- 使用 otool 命令列指令 – 輸入 Objective-C 的類別結構和定義的方法
- nm 指令用來輸出 symbol table
Apple 的建議是如果你找到問題來源,請更新第三方程式庫版本,或是與第三方程式庫開發者聯絡
這位開發者使用了 Electron 7.0.1, 6.0.12, 6.1.3 ,都沒辦法解決問題,但是奇妙的是這位開發者的另一個 App 在審核時卻沒有被 Apple 發現有使用 none-public framework 的問題
如何在送審 Apple Store 前做檢查使否有使用到 none-public API/Framework?
爬了許多文,但是沒有看到 Apple 官方有正式的文件明文規定有哪些 none-public API/Framework 不能使用 ,大部分看到的文章都是提到被 Apple 給退回,Apple 會告訴你用到了哪些 none-public API/Framework ,然後告訴你要用哪些工具檢查 ( strings/otool/nm )
如果你知道那邊可以找到 Apple 官方維護有哪些是屬於 none-public API/Frameworks 的文件,麻煩你跟小編講一下 🙂
檢查到最後發現問題出在 Apple 官方的程式庫
小編在爬文的過程,看到兩篇同樣被 Apple 退回的案例,但是那兩個案例有點有趣,問題追到最後竟然是 Apple 的官方程式庫,這時候就要發揮你的英文溝通能力 🙂
- Our Mac app was rejected because we are using Swift 3 ( 這位作者還是台灣知名的 iOS 開發者 Zonble
- How to find usage of non-public API in Mac Qt App
感想
小編擔任過一家 IC 設計公司的 Mac 軟體開發顧問,這些類似問題小編也都遇過,所以當一位軟體開發者還要有什麼能力?
英文書信寫作與溝通能力
除了要會 Debug 自己寫的軟體發生了哪些問題,還有英文寫作跟溝通的能力也很重要,你要懂得使用英文去描述你遇到的問題,這時候對方的技術支援工程師才有辦法幫你解決問題 。
耐心與時間管理
這中間的溝通過程會耗掉很多時間,你必須要有耐心,還有就是時間管理,我擔任軟體開發主管看到有一種工程師 – 發現問題不是出在自己身上,就停住工作了,希望你不是這樣的工程師,在這溝通過程,應該還有很多事情可以做,例如-重構,還有記得跟你的老闆報告
延伸閱讀
相關線上課程
喜歡我們的分享嗎?
Soft & Share 的網站服務要做一些調整,歡迎給我們一些意見與指教 – 請參考 – 關於 Soft & Share 付費內容計畫
發表迴響