你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 70%的代碼跨平台重用,Google Inbox 是如何做到的?

70%的代碼跨平台重用,Google Inbox 是如何做到的?

編輯:IOS開發基礎

inbox2-640x264-300x123.jpg

開發一個移動應用在當下並不是一件容易的事情。如果想要獲得最多的用戶,你的應用通常需要覆蓋 iOS, Android, 和 Web 三大平台。這就意味著同一個應用需要開發三個版本,使用 Objective-C 或者 Swift 開發 iOS 版本,使用 Java 開發 Android 版本,使用 JavaScript/CSS/HTML5 開發 Web 版本。工作量增大的同時也意味著有更多的 bug 需要修復。

這個問題也是 Google 在開發 Google Inbox 時致力要解決的。在最近發布的這款應用中,Google 使用了一些工具實現了70%的代碼跨平台復用。

Google Inbox 覆蓋 iOS, Android, Web 三個平台,它們使用的是同一個後台代碼邏輯,只是前端的用戶體驗和平台相關特性的實現有所不同。Google 自主開發了一套輔助工具將 Android 版本的 Java 代碼邏輯編譯為 Objective-C (針對 iOS 平台) 和 JavaScript (針對 Web 浏覽器)。 Java 到 JavaScript 的編譯由 Google Web Toolkit SDK 完成,Java 到 Objective-C 的編譯則由 J2ObjC (j2objc.org)來完成。

J2ObjC 是一個開源項目,由 Google 在2013年發布。Google Sheets (Google Docs 中的電子表格部分) 也使用了 J2ObjC,而 Google Inbox 則是目前使用 J2Objc 最多的 Google 項目。

Google Inbox 復用的代碼邏輯包括:對話 (conversations),提醒 (reminders),聯系人 (contacts)。還有網絡相關功能和離線同步。這些代碼邏輯的復用節省了大量的時間和成本。

在產品設計時,Google 將這些可復用功能劃分為抽象的邏輯概念,比如:提醒的邏輯放在 “reminder.java” 中,可以被 Android UI 調用。對 iOS 版本而言,J2ObjC 將 “reminder.java” 編譯成 Objective-C 代碼,再由 iOS UI 調用。

Google 沒有跨平台編譯 UI 部分的代碼,因為不同平台的UI特性各有不同,盲目統一會導致非常糟糕的用戶體驗。代碼復用只是針對可以共享的後台邏輯,前端的UI實現是完全原生 (native) 的。這與 Xamarin (一個基於 Microsoft C# 的跨平台移動開發工具) 提出的概念類似。

跨平台代碼復用通常會帶來一些性能上的問題。Garrick Toubassi,Engineering Director 和 Google Inbox 項目組成員,對此表示: “性能上的影響如果有的話,也可以說是微不足道的。我們做過大量的性能測試。因為沒有加入額外的中間層來處理跨平台兼容性,所有代碼最後都是平台原生代 碼。J2ObjC 編譯生成的目標代碼和 Java 源代碼擁有大致相同的對象數量和對象圖譜復雜度 (object graph complexity) ”。

Google 使用的整套方法解決了跨平台移動開發中的一個很重要的問題,同時也推進了安卓先行 (Android-first) 的移動開發策略。

(原文:arstechnica,譯者:陳皓)

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved