寫一次程式碼,就能在不同裝置上執行,是很多開發人員的夢想,但是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++開發行動應用程式的人並不容易,當內部人才流失卻沒有足夠的人才補足,而終使專案失敗。


Advertisement

更多 iThome相關內容