在 Flutter App/Plug-in 中改用 Swift Package Management (SPM)

關心 iOS/macOS 開發、或是從事包括蘋果平台的跨平台開發的朋友,大概都會注意到今年 CocoaPods 官方宣布進入維護狀態,不再積極開發新功能。同時,Flutter 官方也宣布,接下來蘋果平台的 plugin 開始支援蘋果官方的套件管理工具 Swift Package Management (SPM),慢慢要從 CocoaPods 轉移到 SPM。

這樣的改變自然會衝擊到 Flutter 開發者,這樣的衝擊可以分成兩個部分 — 對 Flutter App 的開發,以及 Flutter Plug-in 開發的部分,整個生態系要轉移到 SPM 上會需要一些時間,但已經是大勢所趨。

要怎麼啟用 Flutter 的SPM 支援,可以參考 Flutter 的官方文件,不過,這兩天試著將手上在維護的一些 Plug-in 升級到 SPM 之後,發現一些官方文件上沒有寫清楚的地方。

Continue reading

在 Windows 上使用小麥注音輸入法

今年上半年度個人在 side project 上的主要心力,大概就是把小麥注音輸入法移植到 Windows 系統上。對我來說,相當於在幾個主要的作業系統上,都有我慣用的中文輸入法,也都比較能夠發揮生產力。

小麥注音是一套從 macOS 系統上開始發展的注音輸入法,在 2022 年的時候,因為幾個朋友平常工作用的機器也不侷限在 macOS 上,所以也開始把自己慣用的輸入工具移植到其他平台上,包括基於 fcitx5 框架的 Linux 版本,而我自己出於好玩,把原本的程式改用 TypeScript/JavaScript 寫了一次,而做出了 Chrome OS 版本,我當時把一台舊 PC 裝上了 Chrome OS Flex,我在那台機器上,也有了順手的輸入法了。

那時候也大概看到了一個技術上的可能 — Windows 上有一套叫做 PIME 的輸入法框架,在這個框架上,可以用 Python、或是可以用 Node 執行的 JavaScript 的輸入法,既然小麥有一個以 TypeScript/JavaScript 寫成的版本,那就有透過 PIME 移植到 Windows 的可能。既然技術上可行,後面就是資源的問題了,人到中年能夠用在工作與家庭以外,還能投入到其他出於興趣的專案上的時間實在不多,大概是在過年期間,才有時間看一下 PIME 的程式,然後讓小麥的程式在 PIME 上面動了起來。

Continue reading

讓注音輸入法支援 HTML 的 Ruby 標示

不久(ㄅㄨˋ ㄐㄧㄡˇ)之前(ㄓ ㄑㄧㄢˊ)一時興起(ㄧ ㄕˊ ㄒㄧㄥˋ ㄑㄧˇ)(ㄗㄞˋ)小麥注音(ㄒㄧㄠˇ ㄇㄞˋ ㄓㄨˋ ㄧㄣ)輸入法(ㄕㄨ ㄖㄨˋ ㄈㄚˇ)(ㄉㄜ˙) fcitx5 移植(ㄧˊ ㄓˊ)版本(ㄅㄢˇ ㄅㄣˇ)(ㄕㄤˋ)加上(ㄐㄧㄚ ㄕㄤˋ)(ㄌㄜ˙)一個(ㄧ ㄍㄜ˙)實現(ㄕˊ ㄒㄧㄢˋ)(ㄒㄧㄥˋ)(ㄉㄜ˙)功能(ㄍㄨㄥ ㄋㄥˊ)(ㄗㄞˋ)打開(ㄉㄚˇ ㄎㄞ)特定的(ㄊㄜˋ ㄉㄧㄥˋ ㄉㄜ˙)(ㄆㄧㄢ)(ㄏㄠˋ)設定(ㄕㄜˋ ㄉㄧㄥˋ)之後(ㄓ ㄏㄡˋ)(ㄗㄞˋ)輸入(ㄕㄨ ㄖㄨˋ)文字(ㄨㄣˊ ㄗˋ)(ㄕˊ)如果(ㄖㄨˊ ㄍㄨㄛˇ)不是(ㄅㄨˊ ㄕˋ)按下(ㄢˋ ㄒㄧㄚˋ) Enter,而是(ㄦˊ ㄕˋ)按下(ㄢˋ ㄒㄧㄚˋ) Ctrl (ㄩˇ) Enter 按鍵(ㄢˋ ㄐㄧㄢˋ)那麼(ㄋㄚˋ ㄇㄜ˙)輸入法(ㄕㄨ ㄖㄨˋ ㄈㄚˇ)就不是(ㄐㄧㄡˋ ㄅㄨˊ ㄕˋ)(ㄓˇ)(ㄐㄧㄤ)中文(ㄓㄨㄥ ㄨㄣˊ)輸入(ㄕㄨ ㄖㄨˋ)(ㄉㄠˋ)各種(ㄍㄜˋ ㄓㄨㄥˇ)文書(ㄨㄣˊ ㄕㄨ)(ㄖㄨㄢˇ)(ㄊㄧˋ)(ㄓㄨㄥ),而是輸入(ㄕㄨ ㄖㄨˋ)帶有(ㄉㄞˋ ㄧㄡˇ)注音(ㄓㄨˋ ㄧㄣ)標示(ㄅㄧㄠ ㄕˋ)(ㄉㄜ˙)中文(ㄓㄨㄥ ㄨㄣˊ)呈現出來(ㄔㄥˊ ㄒㄧㄢˋ ㄔㄨ ㄌㄞˊ)(ㄉㄜ˙)效果(ㄒㄧㄠˋ ㄍㄨㄛˇ)就像(ㄐㄧㄡˋ ㄒㄧㄤˋ)(ㄋㄧˇ)現在(ㄒㄧㄢˋ ㄗㄞˋ)看到(ㄎㄢˋ ㄉㄠˋ)(ㄉㄜ˙)文章(ㄨㄣˊ ㄓㄤ)一般(ㄧ ㄅㄢ)

Continue reading

在 macOS 上使用名片型 LED 字幕機

前兩週在逛光華商場的時候,看到店家在賣一種名片型的 LED 字幕機,想想如果在身上或是桌上有一塊這樣的玩意,顯示一些文字/圖案,應該還頂有意思的,就買了兩組回家當做玩具。

這玩意看起來稱呼很多種,我後來在網路上看了一下,以這一則網路拍賣來說,就還有「LED跑馬名牌」、「LED名片」、「LED名牌」、「LED胸牌」、「LED電子名片」等稱呼—販賣這種商品的店家還頂多的,甚至看起來型號都一樣,不太了解這個業界,也不知道是同一個工廠有很多個代理商,還是說有很多家都在生產,但是共用同一個設計。

這類字幕機價格在台幣五六百元之譜,有紅、藍、黃、綠等多種顏色,我買來的這組解析度為 12×48 pixels,但是好像還有一種更小一點的,解析度是 11×44 pixels。在裝置上可以容納八條訊息,可以用後方的按鈕決定要切換到哪一條訊息,後面還有磁碟以及別針,可以讓你貼在鐵器或是別在身上。

機器上也提供 USB 接頭,除了拿來充電之外,連接電腦之後,還可以透過軟體修改字幕機裡頭的內容,但軟體這部份其實有點麻煩。

Continue reading

因為你用來做 Code Sign 的 Certificate 是幾個月前產生的,所以你的 App 會 Crash

這篇 blog 就是我在 2015 年四月份台北 Cocoaheads 在台上講的事情。

在過年期間,我把去年 11 月時寫的捷運轉乘這個個人的小 iOS App 改了改,在年假結束的前幾天 submit 一個版本,結果,過了一週,被 reject。

蘋果的 reviewer 說,他們只要一安裝這個 App 的 binary,就會馬上 crash;可是在我自己的開發環境中,完全無法重現這個狀況,由於過完年公司的事情就一件一件接著來,所以也就擱在一邊不管了,我到今天才知道為什麼會 crash,而且理由還頂荒唐的。

這兩天我們把公司產品 code 裡頭的一條新功能的開發分支(講 feature branch 不知道會不會比較好懂)併回主線,然後讓主線的程式進入 Jenkins build,讓公司的 QA 部門做出貨前的測試。狀況很奇妙,原本的 App 也是跑得好好的,在支線開發的過程中,也跑得好好的,但是從 Jenkins 編出來的 build,只要一跑起來,就會 crash。

Continue reading

WatchKit

更新

Xcode 6.2 beta 4 之後,就有「+ openParentApplication:reply:」可以呼叫,可以解決大部分的 Watch App Extension 與 Hosting App 之間的溝通問題。這篇大概是 code 6.2 beta 1 推出時寫的。

另外,Hosting App 要通知 Watch App Extension,大概還是得透過 CFNotificationCenter。

原文如下:

要開始嘗試使用 WatchKit 開發 Apple Watch 的相關應用,首先要安裝 Xcode 6.2 Beta 版本與 iOS 8.2 SDK,然後從 File 選單中,選擇 New Target,再從 Apple Watch 分頁中選擇 Watch App。

Xcode 6.2 Beta 版本有個 Bug,如果你原本的專案檔案中,Build Phases 裡頭包含了 Run Script Phase,那麼再加入了 Watch App 之後,Xcode Beta 就會一直當一直當一直當。

所以,在目前 Apple Watch 還沒有上市,蘋果也只提供 Beta 版本的開發工具,只能夠用模擬器模擬運作,一切都還不穩定的狀況下,我們想要先了解 WatchKit 的架構,必須把 Watch App 加到一個沒有 Run Script Phase 的專案中,或是可以把原本專案的 Run Script Phase 砍了,或是開一個新的測試專案。

Continue reading