13's blog

在 Xcode 10 模擬器上跑 Xcode 9 build 的 app

如果還不急著切換到 Xcode 10,可以使用這個技巧來測試 Xcode 9 build 出來的 app,跑在 iPhone XS Max / XR 模擬器的情況:

  1. 用 Xcode 9 選一個模擬器為目標來 build
  2. 在 Products/OOO.app 上按右鍵、Show in Finder
  3. 打開 Xcode 10 的 Simulator app,Hardware 選 XS Max 或 XR
  4. 從 Finder 裡把 OOO.app 拖拉到上述的 Simulator 視窗裡(會安裝)
  5. 點開 app 來觀察狀況

以上方法來自這篇文章的 Wait, What Did You Say? 那一段。

發表會後搶先版:iPhone XS Max 與 XR 開發注意事項

2018 蘋果秋季發表會在 9/13 結束了。iOS 開發工作要注意什麼?

  • 新裝置的官方的教學影片系列
  • 更新版的 HIG
  • iOS 12 GM 已開放下載
  • Xcode 10 GM 已開放下載,可以升級到 Swift 4.2 了
  • 可以用 iOS 12 SDK 上傳至 App Store 了
  • 如果要上傳新版,原來是 iPhone X 的 5.8 吋的可選截圖已增加 6.5 吋,如果上傳 6.5 吋會自動產出 5.8 吋版本
  • Build 自己的 app 試跑 iPhone XS Max 跟 XR 看 UI 是否正常。例如這種同時有橫版、home indicator、瀏海的排版。參考
  • 這兩款的螢幕不同但是 pt 相同,設計時可視為同一種尺寸。XR 要 10 月才開賣。基本上支援好 XS Max 就可以了
  • iOS 11 SDK 有支援上述兩款新機的解析度,所以如果你的 app 是用 Auto Layout 而不是寫死來支援 iPhone X 的話,還不需要急著重新上傳 App Store。來源
  • iPhone XS 螢幕解析度跟 iPhone X 一樣
  • 各種螢幕解析度的差別可以參考這篇
  • 如果你是第一次載 Xcode 10 來用,然後發現 app build 不過,請注意 Xcode 10 預設用 New Build System。如果要改回舊的請去 File/Workspace or Project Settings 改成 Legacy。詳情請見 Xcode release notes

FoundationDB

蘋果今天將一套 noSQL 資料庫軟體 FoundationDB開源出來。這個名字很蘋果。釋出的版本是 5.1.5,看來有點歷史了,但之前沒聽過。出於好奇查了一下它的背景。

FoundationDB 本是一間 startup,以及同名開源資料庫軟體。蘋果在 2015 年把這間公司買下後把軟體閉源,作為內部使用。現在又重新開源起來。

(根據當年 Business Insider 的報導,蘋果收購與閉源 FoundationDB,造成不少公司的麻煩啊…)

至於 FoundationDB 軟體本身是幹嘛呢?資料庫我實在不是很懂,不過看了一些介紹,它擅長做大型分散式服務,不僅高效、有彈性,而且還具有硬體成本優勢。

據說蘋果是把它用在 iMessage 等大型服務的設施上(品質應該比什麼 UIKit、Swift、Xcode 之類的好得多吧 😂)。既然重新開源了,可以觀察一下。

git 不能保證專案在每台電腦上的狀態完全一樣

A quick reminder for iOS dev: git status clean != everything the same between 💻 machines 🖥:

  • Files in .gitignore: Non-shared Scheme/Workspace settings 🛠
  • Empty folders: Search Paths 👀
  • Case-insensitive FS: Change name case of files in .xcassets, crash on #imageLiteral 💥

git 不能保證專案在每台電腦上的狀態完全一樣。以我曾遇過的坑為例:

  • 列在 .gitignore 的檔案:scheme 或 workspace 的設定,如果不是 shared,每台電腦可以完全不一樣。天差地遠
  • 空的資料夾:同事換了 framework 的位置,但 Header Search Paths 設定沒拿掉舊的。他的電腦可以 build,我 pull 後卻不行,因為我的空資料夾還在
  • 檔名不區分大小寫的檔案系統(Mac 預設):把 xcassets 底下的檔案大小寫改掉。git 看不出來差異,build 得過,但是 runtime 時 #imageLiteral 這種 code 會 crash

不是要提出解法,只是講一下有這些坑

Modern iOS dev life

  • Xcode 9.2 for main project until its next release⌛️
  • Xcode 9.3 for iOS 11.3 development and Swift 4.1 side project. High Sierra required⛰️🧗‍♀️
  • Xcode 9.4 beta for iOS 11.4 beta⚠️

Also, never get Xcode via MAS🚫. Directly download from /download/more/