移动应用跨平台技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码转换流技术对比
说明
将 Java 转成 Objective-C 将 Objective-C 转成 Java 将 Java 转成 C#
谷歌推出的j2objc可以将不涉及UI的java代码转换(翻译)为objective-c的 代码,实现约70%的代码跨平台复用
myappconverter, 收费,有些应用不用改代码就能转换成功
• 比较流行的跨平台实现方式 • 不同跨平台方式的对比 • 微信小程序
跨平台实现分类:4大流派
• Web流:也被称为Hybrid技术,基于web相关技术实现界面和 功能
• 代码转换流:将某个语言转成 Objective-C、Java 或 C#,然 后使用不同平台下的官方工具来开发
• 编译流:将某个语言编译为二进制文件,生成动态库或打包成 apk/ipa/xap 文件
编译流技术对比
C++
说明
只用C++实现非界面部分,实现界面:在 iOS 和 Windows Phone 下可以分 别使用 C++ 的超集 Objective-C++ 和 C++/CX,在Android下通过 JNI 调用 系统提供的 Java 方法。
Xamarin
C#开发,在ios下以AOT的方式编译为二进制的文件,在Android通过内置 Mono虚拟机实现。优点:开发APP所需的基本功能全都有,有商业支持。缺 点:深入后会发现功能缺失,尤其是定制 UI;相关资源太少,没有原生平台 那么多第三方库。
小结:跨平台移动应用的优势
• 通过细致的规划,在跨平台方案中,能够实现50%-80%的代码重用。这样 的话,可以实现更快的开发并降低成本。
• 在维护阶段,跨平台开发会带来额外的收益。如果在通用代码库中发现了 bug,我们只需修正一次即可。
优点: 1、可以重用一些实现很复杂的代码 2、或许性能会好些(具体要看实现)
缺点: 1、如果这个工具本身有 Bug 或性能问题,定位和修改成本会很高 2、编译后体积不小,尤其是如果要支持 ARMv8 和 x86 的话
虚拟机流技术对比
说明
React Native 要解决的是开发效率问题,很方便与native开发混用,它
RoboVM
将 Java 字节码编译为可在 iOS 下运行的机器码。和 Xamarin 很像,但 RoboVM 风险会小些,对优先开发 Android 版本的团队挺适用,但目前官方 文档很少,而且不清楚 RoboVM 在 iOS 上的性能和稳定性。
编译流技术总结
编译流比前面的代码转换更进一步,它直接将某个语言编译为普通平台下的二进制文件,这 种做法有明显的优缺点:
React Native
优点: • 组件化开发,复用率高,组件丰富以后,ui开发较快,前端式开发 • 利用了React里面的分层和diff机制。js层传给Native层的是一个diff后的json,然后由Native将这个数据映
射成真正的布局视图 • 可以和原生页面互相调用,作为一部分嵌入到一个已有的原生app中 • 方便调试,可以进行代码热更新 缺点: • 系统仍然(不得不)依赖原生组件暴露出来的组件和方法 • 动画难以实现 • 目前还不稳定,版本更新太快,可能会出现不兼容的问题。有时候需要手动解决 • 更新也会引入bug • 一些涉及到底层的东西需要在ios和android单独开发,然后在js层进行调用 • 比原生的性能要差。直观的感觉是复杂的页面在一些配置较低的手机上会有肉眼可见卡顿的感觉
• 虚拟机流:通过将某个语言的虚拟机移植到不同平台上来运行
Web流技术对比
共性
说明
优点
不足
1、使用 HTML5 +
phoneGap
CSS 发
+
JavaScript 开
2、跨平台重用代码
3、丰富的UI库
4、提供访问设备原生 Cordova API的 JavaScript API
包装器
5、解决原生开发中机
1、漂亮的界面,追求性 能,专注原生,免费开源 2、Angular JS MVVM 开 发理念,数据双向绑定 3、继承自 Cordova,可 以使用 Cordova 的插件
1、Angular JS 学习路 线陡峭 2、Ionic 框架相比于 原生的 Cordova 有所 差异,Cordova 某些 官方插件可能不适用 于Ionic
React native
并没指望完全取代 Native 开发。使用风险可控,遇到问题可以随时改 回 Native 实现。
游戏引擎中的脚本
游戏引擎大多都能跨平台,为了提升开发效率,不少引擎还内嵌了对脚 本支持,比如:Unity 3D,Cocos2d-JS。这些游戏引擎都不适合用来做 APP,一方面是会遇到前面提到的界面绘制问题,另一方面游戏引擎的 实现一般都要不断重绘,比普通 App 更耗电。
Sharpen, JUniversaBiblioteka Baidu,使用的人不多,工具不成熟
将 Haxe 转成其它语言
Haxe没有自己的虚拟机或可执行文件编译器,所以只能通过转成其它 语言来运行,目前支持转成 Neko(字节码)、Javascript、 Actionscript 3、PHP、C++、Java、C# 和 Python,尽管有人实现了转 成 Swift 的支持,但还是非官方的,所以要想支持 iOS 开发目前只能通 过 Adobe AIR 来运行。在跨平台游戏开发方面可行。但熟悉它的开发 者极少。
型适配的难题
6、提供打包、部署的
工具或服务
Ionic
Cordova的分 发版,发布于 09年
11年Adobe收 购phoneGap 改名Cordova
Cordova + AngularJS + 一套样式库
1、开源免费,社区生态 成熟,插件丰富 2、支持离线场景应用 3、开发工具选择空间大
只提供基础访问设备 的接口,需要自己搭 配其他UI框架和 JavaScript框架来搭配
XMLVM
它首先将字节码转成一种基于 XML 的中间格式,然后再通过 XSL 来生 成不同语言,目前支持生成 C、Objective-C、JavaScript、C#、 Python 和 Java。缺点:生成代码不可读,因为很多语言中的语法糖会 在字节码中被抹掉。代码有问题基本没法修改,也没法调试代码。