2016-03-25 13:02:25 1245瀏覽
隨著蘋果的ios操作系統(tǒng)和谷歌的android系統(tǒng)競爭程度升級,由蘋果公司發(fā)布的一款Swift語言即將把面向Android系統(tǒng)的開發(fā)能力作為其開源Swift發(fā)展方向當(dāng)中的重要組成部分。而且開發(fā)根據(jù)開發(fā)者Romain Goyet在其最近的一篇博文中所言,開發(fā)人員現(xiàn)在已經(jīng)可以開始利用Swift進行面向Android的開發(fā)工作。
蘋果ios開發(fā)語言Swift的進攻號角:
Goyet指出,Swift語言采用LLVM編譯器——順帶一提,Goyet最廣為人知的事跡就是對蘋果Siri進行了逆向工程?!澳壳暗腟wift編譯器會接入到LLVM當(dāng)中,從而生成二進制文件,”他寫道?!巴瑫r值得指出的是,LLVM與Swift都是由Chris Lattner設(shè)計而成?!?
相較于針對特定架構(gòu)生成代碼,LLVM能夠面向設(shè)想中的設(shè)備生成匯編代碼,而后將其轉(zhuǎn)換為能夠切實與目標架構(gòu)相對接的實際代碼。
Goyet這樣描述整個處理流程:Swift編譯器首先根據(jù)要求生成LLVM-IR(即中間表示);LLVM則根據(jù)中間表示同時生成ARM ELF文件格式。接下來能夠直接使用Android系統(tǒng)之上原生代碼語言的Android NDK則生成二進制鏈接,直接指向以上生成的對象文件。該文件最終被打包成Android應(yīng)用。
不過實際編碼過程當(dāng)中并不一定會涉及上述全部步驟,Goyet指出?!捌渲械淖畲髥栴}在于SwiftCore庫的缺失?!湍壳岸?,蘋果公司已經(jīng)發(fā)布了一套面向iOS、OS X以及WatchOS的SwiftCore庫。但很明顯,其還沒有發(fā)布任何Android版本?!?
不過并非所有Swift代碼都需要依托于SwiftCore庫?!耙虼酥灰覀兪褂玫腟wift子集不涉及SwiftCore,則不會出現(xiàn)任何問題,”Goyet解釋道。
不過Goyet目前還沒有看到任何利用Swift實例源碼開發(fā)而成的Android,“這是因為Swift語言本身僅僅是問題中的一個側(cè)面。另一大側(cè)面或者說最難解決的因素在于,其對于Android UI框架的支持非常有限。另外,目前Android系統(tǒng)上也還沒有任何可用的Swift UI框架?!?
Goyet預(yù)計蘋果公司為Swift制定的開源計劃肯定會將SwiftCore囊括于其中。“接下來在Android平臺上實現(xiàn)SwiftCore庫應(yīng)該會成為Swift語言開源重組工作中的重要一環(huán)?!?
Goyet并不是惟一一位冒險利用Swift語言在Android平臺上進行應(yīng)用開發(fā)的嘗試者。移動開發(fā)工作室ArcTouch早在去年就發(fā)布了一款概念驗證性計算器應(yīng)用,且同時面向Android與iOS平臺。ArcTouch采用的是一款定制化編譯器,其能夠?qū)wift代碼進行解析并輸出為Java源代碼。作為基礎(chǔ)素材的Swift代碼由蘋果Xcode IDE進行編寫,并最終在谷歌的Android Studio IDE當(dāng)中完成構(gòu)建流程并生成Android APK。
當(dāng)Swift最終以開源面貌正式亮相之后,各開發(fā)工具廠商將能夠編寫出與之相適應(yīng)的IDE,開發(fā)人員則可以利用這些IDE在Swift中進行代碼編寫并直接將其編譯至Android系統(tǒng)平臺,ArcTouch CEO Eric Shapiro在接受采訪時解釋稱。
“作為一款編程語言,Swift與Java其實非常相近,與C#也擁有大量類似的特性,而且將Swift代碼編譯為Android可運行形式并不是非常困難,”Shapiro表示。雖然目前尚不清楚Swift是否真的勝過Java,不過Shapiro指出,Swift是一種新型語言且擁有大量更為現(xiàn)代的結(jié)構(gòu),而Java在這些方面則需要經(jīng)過持續(xù)改進方能與之匹敵。
以上就是Swift語言的相關(guān)介紹。如果對swift語言感興趣或是想要深入了解的朋友??梢赃M入扣丁學(xué)堂官方網(wǎng)站免費注冊成為會員??鄱W(xué)堂的所有教學(xué)視頻免費提供會員們觀看,其中swift培訓(xùn)實戰(zhàn)教程就是其中之一。
查看更多關(guān)于“iOS培訓(xùn)資訊”的相關(guān)文章>>