一次 Cocoa App(macOS App)開發嘗試

Ashen發表於2019-03-01

一次 Cocoa App(macOS App)開發嘗試

“我們從小就聽長輩們說起過懶漢,彷彿懶惰很不體面。實際上,沒有我們的這些懶漢,恐怕就沒有社會的進步;沒有我們的這些懶漢,勤勞的人面對的恐怕只會是單調乏味的勞作。”這裡引入小學課本學過的文章《懶惰的智慧》中的一句話,深以為這句話就是對我們程式設計師群體的真實寫照,促進社會進步說的有點誇張,但是提高生產效率還是不在話下的,這也是我本次紀錄的一點兒動力。

好好的開發 iOS,為什麼要玩玩 macOS 呢?自我揣測每一位 iOS Developer(以下簡稱 iOSer) 的內心中都有一個開發 macOS 的衝動,畢竟工具(mac + Xcode)和基礎技術(Objective-C, Swift)都是現成的,iOS 開發的應用需要上架才能使用,而 mac App 甚至都可以省略上架這一步,在朋友間傳播起來也方便得多。

閒話少說,今天談談最近一次開發的 macOS App 開發者之刃 App Store開發者之刃 首頁

App Store 頁介紹

功能包括:

  • 色盤(儲存配色方案)
  • 圖示生成器(生成 iOS/macOS/Android 多尺寸圖示檔案)
  • 影象壓縮(基於 TinyPng
  • json 轉模型(json 字串轉成 swift 模型物件)
  • 開源庫集(github 開源庫分類整理)等功能
  • 支援開機自啟動、全域性快捷鍵、自動檢查更新等。

1. 從技術的角度談談做了什麼

1.1 開發了一款 macOS App

主要採用 Swift4.2 編寫“開發者之刃”,相比於 OC,Swift 的優勢想必用過的朋友們都知道。

“開發者之刃”的技術點大概如下:

對於沒有開發mac 經驗的同學,推薦劍指人心的 《macOS 應用開發基礎教程》,入門是完完全全沒有問題的。“開發者之刃”裡面用到的技術基本上都能在這本書中找到,而且從完全沒有 mac App 開發經驗到上架一個完整的 App,本人是照著書中內容一步步走下來的,這裡也一併感謝下作者。

1.2 順手擼了個服務端

採用 Python 的 Flask 庫搭建的服務端,操作簡單,功能全面。IDE 用的是 PyCharm

這裡為什麼要用“順手”二字呢?實實在在是沒有服務端的開發經驗,在網易雲課堂上看了一個教程,操起鍵盤就是幹。中間遇到問題就 Google 一下,不能解決的就直接繞過去了,所以到最後功能既不完善,也不繫統,但也勉強夠用。畢竟精力有限,以完善功能為主,系統性的學習還任重而道遠。

服務端的技術點大概如下:

  • pip: 包管理工具
  • http 請求、web 頁面:Flask 很容易實現
  • Vue: 漸進式 JavaScript 框架,快速構建 web 頁面

半吊子都算不上的服務端開發,這裡就不班門弄斧了,基本功能大概如上所訴。照著網易雲上的視訊 Python Flask系列(1)——基礎 學習的 Flask 基礎,感覺講的挺好,淺顯易懂,寫個簡簡單單的頁面是完全足夠了。

1.3 切了幾張圖

圖可以切,審美就不不必較真了。

技術呢也沒有用到什麼技術(主要是我都不知道有啥技術,完全兩眼一抹黑),這裡就簡單介紹下用的工具吧。

  • Sketch:輕量易用的向量設計工具。易用易用,誰用誰知道。
  • iconfont:向量圖示管理、交流平臺。免費圖示多種多樣,可下載原始檔,也可指定顏色、大小下載。
  • tinypng: 智慧有失真壓縮圖片。“開發者之刃”中的圖片壓縮功能核心就是用的它的服務,壓縮率高,壓縮後的影象幾乎肉眼看不到失真。

2. 談談為什麼要做這個 App

前面提到了,每個 iOSer 的內心中都有一顆開發 mac App 的心,其實說白了,每一個程式設計師的內心中都有嘗試新事物的衝動。

確確實實解決開發中的一些痛點。服務端甩給客戶端一大串 json,我們每次構建物件時煩不勝煩,機械重複的程式碼只是在浪費我們有限的生命與激情,所以有了《json 轉模型》的想法。設計給的色值一天三變,背景色、基礎字型顏色不統一,被他們一句“這個顏色就是之前用的”弄得痛不欲生,自己設計個玩意後,色值轉身就忘,所以有了《色盤》的想法。github 看到優秀的倉庫也不太想 star,實在是 star 的數量過多,想用的時候像是大海撈針,所以有了《開源庫集》的想法。自己寫個 App,要被切各個尺寸的圖弄瘋,切完還得一張張拖到 Assets 中合適的坑中,總之開發中總會遇到一些重複的工作,大概是可以通過程式碼處理的吧。

學習真的會使人快樂。當剛開始接觸一個新的技術時,汲取知識的快感是強烈的,不論是純粹的學習還是單純想炫技,能學到東西總歸是一個非常好的結果。當然要深挖技術時的確會有痛苦,痛並快樂著吧。

3. 作一個簡單的總結

技術:

  • mac App 開發:Swift + Xcode
  • web 開發:Python + PyCharm
  • 切圖:iconfont + Sketch

資源:

相關文章