Life is a YOLO game

Sudo 開發日記 2016-05-13

May 15, 2016

工作內容

1. 整合 Fabric

Fabric 是 Twitter 旗下的行動應用程式開發平台,平台提供 Crashlytics 負責錯誤回報與 Answers 負責使用者行為分析。

會使用 Crashlytics 是因為平常使用的 Rollbar 雖然有支援 JavaScript,但 不支援 React Native;Answers 我必須承認使用起來跟 Google Analytics 別無二致,會使用 Answers 只是為了將日常工具 (Crashlytics + Answers) 都整合在同一個平台 (Fabric) 方便日後管理。

2. 整合 AppHub

中國的 app 開發商流行對 app 進行 熱部署 (hot deploy),AppHub 是其中一家提供該服務的廠商。

熱部署就是在 app 中嵌入可以自我更新部分程式碼的小程式,藉此透過第三方服務更新所有已經部署到使用者手機上的 app。由於送審曠日費時 (最新消息: 蘋果 App Store 的審核時間,大幅減少到不用 2 天),透過熱部署可以快速地修復可能會或已經造成 app 閃退、安全性漏洞等可能發生嚴重公關問題的 bug。

AppHub 的介面簡單 (真的有夠簡單,什麼功能都沒有),但吸引我眼球的原因是 AppHub 官方直接支援 React Native,提供 相對完整的開發文件,方便開發者將服務整合到 app 中。

其他新東西

1. ListView 的陷阱

Rate-limited row rendering - By default, only one row is rendered per event-loop (customizable with the pageSize prop). This breaks up the work into smaller chunks to reduce the chance of dropping frames while rendering rows. — 截自 React Native 官方文件 ListView 章節

React Native 的 ListView 預設一次動畫 (例如往左滑動,從畫面開始移動到畫面靜止算一次動畫) 結束後只會從 DataSource 載入一筆資料。如果你需要配合無限捲動 (我是使用 react-native-infinite-scroll-view 達成) 的效果,記得要透過 pageSize 將一次載入的資料筆數調高 (例如一次十筆),不然後面的資料一筆一筆載入,使用如果滑動的速度夠快資料就會在滑到列表結尾才載入,會讓使用者有卡住的感覺。

2. Xcode 如果修改過 Target name,記得要將舊 library 從專案中移除,否則 ld 會出錯

因為我看別人的文章 Target name 都是取有意義的名字,我修改了 Target name,修改之後就一直 app 就一直無法通過 build。我很確定我做了以下幾個步驟:

  1. rm node_modules && npm install 重新安裝所有 npm packages,單純以防萬一。
  2. cd ios && pod install && cd .. 重新安裝所有 Cocoapods 套件與 Xcode workspace 檔案,確定 library 都有正確連結到專案上。
  3. 重新啟動 Xcode 這一步常常被忘掉 XD 雖然不一定必要但重開治百病。

以上步驟做完狀況仍然沒有被排除。翻翻找找之後,我發現由於 Cocoapods 會生成 libPods-[target name].a 來與專案連結,Linked Frameworks and Libraries 還殘留著舊的 library。刪掉之後也不用重開 Xcode,直接 Clean & Build 就可以了。

當然如果在此遇到奇怪的問題,還是重開 Xcode 看看,重開治百病。

3. React Native 盡可能使用 Flexbox 而不是 position

React Native 是我看過對 Flexbox 支援最完整的平台,因此在調整樣式的選擇上盡可能地選擇使用 Flexbox 來排版。

我目前遇到的特殊情形只有浮動的按鈕 (e.g. iOS 返回用的關閉按鈕,口語上的叉叉符號),其他版面都可以透過純 Flexbox 達成。由於我跟 Flexbox 還是很不熟,我還是需要參考 cheatsheet,在此提供我常用的 cheatsheet A Complete Guide to Flexbox,基本上上面列出來的 Flexbox 屬性到現在還沒有遇到 React Native 不支援的情形。


Henry Wu
Written by Henry Wu who lives and works in Taipei producing some nasty bugs.
Author: Henry Wu License: MIT License: CC BY-NC-ND 4.0