Upgrade to Pro — share decks privately, control downloads, hide ads and more …

作為一個跨平台的 Mobile App 開發者,從入門到放棄!?

Elvis Lin
November 04, 2018

作為一個跨平台的 Mobile App 開發者,從入門到放棄!?

Briefly introduce how to become a cross Android and iOS platforms engineer, or not.

Elvis Lin

November 04, 2018
Tweet

More Decks by Elvis Lin

Other Decks in Programming

Transcript

  1. 關於我 • Elvis Lin • Android, iOS 與 React Native

    永遠的初學者 • Twitter: @elvismetaphor • Blog: https://blog.elvismetaphor.me • Slides: https://speakerdeck.com/elvismetaphor
  2. ⼤大綱 • Mobile App 開發流程 • 關於那些跨平台的開發技術 • 為什什麼你應該 /

    不應該同時熟悉 iOS 與 Android 的開發 • 如何從⼀一個平台跨去另外⼀一個平台 • 學習資源
  3. 較好的 Apps 開發流程 規劃 開發 建置 測試 發佈 介⾯面
 設計

    編寫 測試 週期性的驗收
 遇到不清楚的需求,往前反饋
  4. 專案管理理⼯工具 • Asana • Trello • Jira • Github Issues

    • 還有很多,多數都⽀支援 Kanban 的顯⽰示
  5. UI 設計的⼯工具 • Photoshop • Sketch • Adobe XD •

    Zeplin • 簡化設計師跟⼯工程師之間對於畫⾯面元素⼤大⼩小與相對位置 的溝通
  6. PWA • 使⽤用現代的 Web 技術,讓網⾴頁也可以提供近似 app 的 體驗 • 可以離線使⽤用,有

    cache 的機制 • 透過 service worker 在背景執⾏行行任務 • 可以提供 push notification • ⼀一次開發就可以在多個⽀支援 PWA 的瀏覽器上使⽤用
  7. Hybrid App • 透過 WebView 讓開發者可以使⽤用 Javascript, CSS 開發功能 •

    同時將開發的功能打包成⼀一個 app,上架到 App Store 或 Google Play • 同⼀一份程式碼可以在不同平台執⾏行行 • 主要的框架:Ionic、PhoneGap • 可以⽀支援的功能比 Native SDK 少⼀一些,反應速度較慢
  8. React Native • 使⽤用 Javascript (or Typescript / ReasonML) 開發

    • 如果你有 React 開發的經驗,可以沿⽤用相關的知識 • 使⽤用 Bridge 機制跟 Native UI Component 做溝通 • 提供近似 Native App 的執⾏行行速度
  9. React Native Most people only know one or two platforms

    well. React Native libraries that have native bridges such as maps, video, etc. requires equal knowledge of all three platforms to be successful. 
 — Gabriel Peal @Airbnb 來來源:https://medium.com/airbnb-engineering/react-native-at-airbnb-the-technology- dafd0b43838
  10. Flutter • Google 推出的跨平台框架 • 使⽤用 Dart 語⾔言開發 • 良好的⽀支援

    material design • 還在 preview 的階段 • ⾃自帶渲染引擎 • 提供近似 Native App 的執⾏行行速度
  11. 跨平台與原⽣生開發 • 沒有任何⼯工具可以適合所有問題 • ⼤大部分跨平台的技術都可以滿⾜足 80% 以上的開發需求,但 是客⼾戶、老闆、專案經理理的需求,總是會有⼀一部分來來⾃自那 另外的 20%

    • 在產品開發初期,跨平台的技術可以有效的降低成本,縮 短開發時間 • 如果你要使⽤用最新的技術 (ex: AR, ML),提供最流暢的使⽤用 者體驗,Native SDK 依然是維⼀一的選擇
  12. 返回鍵 • iOS 沒有實體的返回按鈕 • Android 的實體返回按鈕的操作要跟 Navigation Bar /

    ToolBar 的返回按鈕的⾏行行為要⼀一致 • 如果不希望返回按鈕可以按怎麼辦?怎麼設計才不會讓使 ⽤用者操作起來來很奇怪?
  13. 背景執⾏行行 • 預設情況下,iOS 的 app 進入到背景後就會進入 Suspended Mode,程式會暫停執⾏行行 • Android

    在進入背景後 background thread 的操作會繼續執 ⾏行行 • Android 的 service 可以提供跨 process 的存取,iOS 在跨 process ⾏行行為的共⽤用上只提供部分功能
  14. 兩兩個平台互相模仿 • iOS 12 提供更更多跨 app 操作的⽅方式 • Android 在

    Oreo 之後對 background service 加入了了⼤大量量的限 制
  15. 為什什麼不需要同時熟悉
 iOS 與 Android 的開發 • ⼈人的時間是有限的 • 如果你在⼀一間⼤大公司⼯工作,iOS 跟

    Android 的開發者通常不 會是同⼀一個⼈人 • 雖然你會 Android 與 iOS 的開發,同⼀一個時間裡還是只會專 注在⼀一個平台的開發上
  16. 為什什麼不需要同時熟悉
 iOS 與 Android 的開發 • 公司更更偏好的事會⼀一種前端技術(Android / iOS /

    Angular / React )跟⼀一種後端技術(ex: Spring, Express.js, Laravel and etc)的⼈人 • 同⼀一個 feature,backend API 跟 client 的開發可以是循序式 的,但是 Android 跟 iOS 的開發通常會是並⾏行行的 • ⼩小團隊通常會直接使⽤用跨平台開發的技術 • 你的薪⽔水並不會變兩兩倍
  17. 第⼀一階段的地圖(建議) • Lifecycle • Layout • (iOS) AutoLayout • (Android)

    ConstraintLayout • Network & Multi-thread • Background Task
  18. 其他教學資源 • raywenderlich.com • udemy.com • udacity.com • Tutorial videos

    on Youtube • 初學者可以從影片開始,跟著⼀一步⼀一步做比較有帶入感 • 有經驗的開發者直接看⽂文件可以節省你的時間
  19. 追蹤重要的開發者 • 40 leading Android developers to follow on Twitter


    https://techbeacon.com/40-leading-android-developers- follow-twitter • 52 people every iOS developer should follow on Twitter
 https://medium.com/app-coder-io/52-people-every-ios- developer-should-follow-on-twitter-25ca8915369a • Who to follow on Twitter if you’re a frontend developer
 https://medium.com/@sapegin/who-to-follow-on-twitter- if-youre-a-frontend-developer-b7873e787480
  20. 補充資料 • Blurring the Line between Native and Web
 https://youtu.be/yd-Xztr4fyY

    • Cross-platform Progressive Web Apps
 https://youtu.be/2kv9tH_IYtQ • Android Developer Youtube Channel
 https://bit.ly/2iZ2LkC • WWDC 2018
 https://developer.apple.com/videos/wwdc2018/