Swift語言已邁出侵蝕Android應用開發的第一步
譯文開發人員從現在開始已經可以享受這項功能,不過真正值得期待的仍是Swift全面開源之后所帶來的種種助益。
盡管最初以開發面向iOS與OS X系統平臺的應用程序作為設計目標,但如今蘋果公司的Swift語言即將把面向Android系統的開發能力作為其開源Swift發展方向當中的重要組成部分。而且開發根據開發者Romain Goyet在其最近的一篇博文中所言,開發人員現在已經可以開始利用Swift進行面向Android的開發工作。
Goyet指出,Swift語言采用LLVM編譯器——順帶一提,Goyet最廣為人知的事跡就是對蘋果Siri進行了逆向工程。“目前的Swift編譯器會接入到LLVM當中,從而生成二進制文件,”他寫道。“同時值得指出的是,LLVM與Swift都是由Chris Lattner設計而成。”
相較于針對特定架構生成代碼,LLVM能夠面向設想中的設備生成匯編代碼,而后將其轉換為能夠切實與目標架構相對接的實際代碼。
Goyet這樣描述整個處理流程:Swift編譯器首先根據要求生成LLVM-IR(即中間表示);LLVM則根據中間表示同時生成ARM ELF文件格式。接下來能夠直接使用Android系統之上原生代碼語言的Android NDK則生成二進制鏈接,直接指向以上生成的對象文件。該文件最終被打包成Android應用。
不過實際編碼過程當中并不一定會涉及上述全部步驟,Goyet指出。“其中的最大問題在于SwiftCore庫的缺失。……就目前而言,蘋果公司已經發布了一套面向iOS、OS X以及WatchOS的SwiftCore庫。但很明顯,其還沒有發布任何Android版本。”
不過并非所有Swift代碼都需要依托于SwiftCore庫。“因此只要我們使用的Swift子集不涉及SwiftCore,則不會出現任何問題,”Goyet解釋道。
不過Goyet目前還沒有看到任何利用Swift語言開發而成的Android,“這是因為Swift語言本身僅僅是問題中的一個側面。另一大側面或者說最難解決的因素在于,其對于Android UI框架的支持非常有限。另外,目前Android系統上也還沒有任何可用的Swift UI框架。”
Goyet預計蘋果公司為Swift制定的開源計劃肯定會將SwiftCore囊括于其中。“接下來在Android平臺上實現SwiftCore庫應該會成為Swift語言開源重組工作中的重要一環。”
Goyet并不是惟一一位冒險利用Swift語言在Android平臺上進行應用開發的嘗試者。移動開發工作室ArcTouch早在去年就發布了一款概念驗證性計算器應用,且同時面向Android與iOS平臺。ArcTouch采用的是一款定制化編譯器,其能夠對Swift代碼進行解析并輸出為Java源代碼。作為基礎素材的Swift代碼由蘋果Xcode IDE進行編寫,并最終在谷歌的Android Studio IDE當中完成構建流程并生成Android APK。
當Swift最終以開源面貌正式亮相之后,各開發工具廠商將能夠編寫出與之相適應的IDE,開發人員則可以利用這些IDE在Swift中進行代碼編寫并直接將其編譯至Android系統平臺,ArcTouch CEO Eric Shapiro在接受采訪時解釋稱。
“作為一款編程語言,Swift與Java其實非常相近,與C#也擁有大量類似的特性,而且將Swift代碼編譯為Android可運行形式并不是非常困難,”Shapiro表示。雖然目前尚不清楚Swift是否真的勝過Java,不過Shapiro指出,Swift是一種新型語言且擁有大量更為現代的結構,而Java在這些方面則需要經過持續改進方能與之匹敵。