开发人员从现在开始已经可以享受这项功能,不过真正值得期待的仍是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在这些方面则需要经过持续改进方能与之匹敌。