Lmsgsendnilself

Uninhibited Soul, Free Craziness

跨平台开发尝试

| Comments

  今天简单聊一下两种跨平台开发引擎调研的优缺点。

RoboVM

  它是一个VM,它能够将Java的字节码翻译成ARM或者X86平台的原生代码。 由于RoboVM自带支持Java到Object-C的bridge,我们可以使用RoboVM作为中间媒介,借助一系列Java到Objective-C绑定机制,来实现对硬件以及原生iOS API的全覆盖访问。
  优点: RoboVM就像LLVM的前端,将Java字节码翻译成为LLVM位码,接着,生成的LLVM位码被LLVM后端优化并翻译成机器码,LLVM支持所有不同类型的CPU架构与操作系统方案。 因此,理论上,能够做到完美兼容并达到原生效果。
  缺点:目前,仅支持大部分原生API,它并没有靠谱的开源库社群,例如网络下载指示的MBHUDProgress类都要自己实现,简直就是原始开发。对于简单的小型项目,可以进行探索。 在内部一个iOS新项目的第一个版本开发初期,尝试着以RoboVM为基础,通过RoboVM提供的iOS原生API映射,来进行iOS端开发。就在开发中遇到各种坑,艰难前行的过程中,收到了RoboVM团队发来的停止维护邮件。不得不转向其他方式。

Multi-OS Engine

  它是Intel研发的一套多操作系统引擎,类似于RoboVM,其目的也是将Java程序向iOS平台移植。此引擎也是RoboVM停止维护后,在官方提供的可替代的方式。

  环境搭建:
  1. 先去官网注册申请测试。
  2. 下载Android Studio
  3. 下载并安装MOS插件,重启 Android Studio,
  4. 通过菜单中的新建Multi-OS Engine Project工程即可创建.

  优点:它较之于RoboVM的好处有可以创建Common Lib 使得Android 和iOS共用相同逻辑代码。
  缺点:其原理为通过虚拟机的方式,将Java代码在iOS系统中执行,生成的执行文件很大,另外,对于多个java framewrok,将会通过多个虚拟机进行调用,这样必然造成iOS系统庞大的内存开销。
  另外该项目目前仅仅是一个beta版的引擎,和同事搭建环境,跑测demo并深入研究后,遇到一些问题,在寻找解决方案的过程中发现此社区非常不活跃,与intel开发人员多次交流后,理性认为该跨平台方案目前更多地可以作为兴趣来进行玩耍尝试,前途不明朗,并不能承担一个复杂项目,放弃之。

Comments