歡迎加入QQ討論群258996829
黑暗掠奪者 頭像
蘋果2袋
2
黑暗掠奪者

Swift語言已邁出侵蝕Android應(yīng)用開發(fā)的第一步

發(fā)布時(shí)間:2015-11-05 13:47  回復(fù):0  查看:4951   最后回復(fù):2015-11-05 13:47  

開發(fā)人員從現(xiàn)在開始已經(jīng)可以享受這項(xiàng)功能,不過真正值得期待的仍是Swift全面開源之后所帶來的種種助益。

盡管最初以開發(fā)面向iOS與OS X系統(tǒng)平臺的應(yīng)用程序作為設(shè)計(jì)目標(biāo),但如今蘋果公司的Swift語言即將把面向Android系統(tǒng)的開發(fā)能力作為其開源Swift發(fā)展方向當(dāng)中的重要組成部分。而且開發(fā)根據(jù)開發(fā)者Romain Goyet在其最近的一篇博文中所言,開發(fā)人員現(xiàn)在已經(jīng)可以開始利用Swift進(jìn)行面向Android的開發(fā)工作。

Goyet指出,Swift語言采用LLVM編譯器——順帶一提,Goyet最廣為人知的事跡就是對蘋果Siri進(jìn)行了逆向工程。“目前的Swift編譯器會接入到LLVM當(dāng)中,從而生成二進(jìn)制文件,”他寫道?!巴瑫r(shí)值得指出的是,LLVM與Swift都是由Chris Lattner設(shè)計(jì)而成?!?

相較于針對特定架構(gòu)生成代碼,LLVM能夠面向設(shè)想中的設(shè)備生成匯編代碼,而后將其轉(zhuǎn)換為能夠切實(shí)與目標(biāo)架構(gòu)相對接的實(shí)際代碼。

Goyet這樣描述整個(gè)處理流程:Swift編譯器首先根據(jù)要求生成LLVM-IR(即中間表示);LLVM則根據(jù)中間表示同時(shí)生成ARM ELF文件格式。接下來能夠直接使用Android系統(tǒng)之上原生代碼語言的Android NDK則生成二進(jìn)制鏈接,直接指向以上生成的對象文件。該文件最終被打包成Android應(yīng)用。

不過實(shí)際編碼過程當(dāng)中并不一定會涉及上述全部步驟,Goyet指出?!捌渲械淖畲髥栴}在于SwiftCore庫的缺失?!湍壳岸?,蘋果公司已經(jīng)發(fā)布了一套面向iOS、OS X以及WatchOS的SwiftCore庫。但很明顯,其還沒有發(fā)布任何Android版本?!?

不過并非所有Swift代碼都需要依托于SwiftCore庫。“因此只要我們使用的Swift子集不涉及SwiftCore,則不會出現(xiàn)任何問題,”Goyet解釋道。

不過Goyet目前還沒有看到任何利用Swift語言開發(fā)而成的Android,“這是因?yàn)镾wift語言本身僅僅是問題中的一個(gè)側(cè)面。另一大側(cè)面或者說最難解決的因素在于,其對于Android UI框架的支持非常有限。另外,目前Android系統(tǒng)上也還沒有任何可用的Swift UI框架?!?

Goyet預(yù)計(jì)蘋果公司為Swift制定的開源計(jì)劃肯定會將SwiftCore囊括于其中?!敖酉聛碓贏ndroid平臺上實(shí)現(xiàn)SwiftCore庫應(yīng)該會成為Swift語言開源重組工作中的重要一環(huán)?!?

Goyet并不是惟一一位冒險(xiǎn)利用Swift語言在Android平臺上進(jìn)行應(yīng)用開發(fā)的嘗試者。移動開發(fā)工作室ArcTouch早在去年就發(fā)布了一款概念驗(yàn)證性計(jì)算器應(yīng)用,且同時(shí)面向Android與iOS平臺。ArcTouch采用的是一款定制化編譯器,其能夠?qū)wift代碼進(jìn)行解析并輸出為Java源代碼。作為基礎(chǔ)素材的Swift代碼由蘋果Xcode IDE進(jìn)行編寫,并最終在谷歌的Android Studio IDE當(dāng)中完成構(gòu)建流程并生成Android APK。

當(dāng)Swift最終以開源面貌正式亮相之后,各開發(fā)工具廠商將能夠編寫出與之相適應(yīng)的IDE,開發(fā)人員則可以利用這些IDE在Swift中進(jìn)行代碼編寫并直接將其編譯至Android系統(tǒng)平臺,ArcTouch CEO Eric Shapiro在接受采訪時(shí)解釋稱。

“作為一款編程語言,Swift與Java其實(shí)非常相近,與C#也擁有大量類似的特性,而且將Swift代碼編譯為Android可運(yùn)行形式并不是非常困難,”Shapiro表示。雖然目前尚不清楚Swift是否真的勝過Java,不過Shapiro指出,Swift是一種新型語言且擁有大量更為現(xiàn)代的結(jié)構(gòu),而Java在這些方面則需要經(jīng)過持續(xù)改進(jìn)方能與之匹敵。

您還未登錄,請先登錄

熱門帖子

最新帖子

?