新聞連結:
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++開發行動應用程式的人並不容易,當內
部人才流失卻沒有足夠的人才補足,而終使專案失敗。