看板 Programming 關於我們 聯絡資訊
新聞連結: Dropbox:為iOS和Android開發共用程式碼,會付出更多開發成本 https://www.ithome.com.tw/news/132449 The (not so) hidden cost of sharing code between iOS and Android http://bit.ly/2KGQOzj 新聞內容: Dropbox在2013年使用C++開發iOS和Android應用程式,但卻發現必須額外開發許多工具來 共用程式碼 寫一次程式碼,就能在不同裝置上執行,是很多開發人員的夢想,但是Dropbox開發團隊 在部落格分享了他們的經驗,雖然這種方法看似節省許多開發工作,但是其背後隱藏的成 本比想像中的高很多,因此Dropbox後來不再只用C++撰寫iOS和Android應用程式,而是老 實地使用各自平臺的語言開發。 在2013年的時候,Dropbox選擇以C++撰寫iOS和Android應用程式的共用程式碼,而非選擇 使用Objective C與Java開發各別的程式,而他們已經不採用這樣的策略,現在主要使用 Swift和Kotlin。Dropbox開發團隊提到,共用程式碼的策略需要付出許多隱藏的成本。 只使用C++開發不同平臺的程式,最大的成本,就是需要額外建立自己的框架與函式庫, Dropbox開發團隊提到,他們為了讓行動應用程式能與主機環境互動,而開發了幾個框架 ,包括能產生跨開發語言類型宣告和介面綁定工具Djinni,還有可用於後臺執行任務和主 要執行緒的框架等。函式庫方面,則有為JSON序列化開發的json11,以及為C++開發不可 空值函式庫nn。 但只要採用平臺原生語言,這些工作都可以避免,而且C++比起Python或C#,所要付出的 成本更高,因為C++缺乏單一全功能標準函式庫,雖然可以用開源社群資源,發展這些框 架與函式庫,但是Dropbox開發團隊提到,C++社群的開源風氣並不如行動開發社群興盛。 當不使用Google和Apple的開發環境,也就等同於放棄各陣營,對開發平臺提供的最佳開 發實踐。Dropbox開發團隊表示,行動生態系統有許多工具可以加速開發效率,特別是對 應用程式除錯來說,在平臺預設的IDE中,為原生開發語言除錯,比C++程式碼容易許多。 此外,Dropbox開發團隊還需要投入時間建置工具,來支援共用C++程式碼,像是需要創建 一個函式庫來打包C++程式碼,使其能夠被Apple的Xcodebuild和Google的Gradle讀取。 而且即便iOS和Android都是行動應用程式,有著相同的特性與功能,但畢竟平臺仍然存在 差異,因此也會影響實作的方法,像是iOS和Android的後臺程式的執行方法不同,和照片 檔案互動的方法也不一樣,因此也難以真的達到只撰寫一次程式碼,就可以在不同平臺執 行的理想。而人才也是一大問題,要找到能以C++開發行動應用程式的人並不容易,當內 部人才流失卻沒有足夠的人才補足,而終使專案失敗。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.134.158 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1566100142.A.93E.html