1、浅谈跨平台移动应用技术 比较流行的跨平台实现方式不同跨平台方式的对比微信小程序 跨平台实现分类 4大流派 Web流 也被称为Hybrid技术 基于web相关技术实现界面和功能代码转换流 将某个语言转成Objective C Java或C 然后使用不同平台下的官方工具来开发编译流 将某个语言编译为二进制文件 生成动态库或打包成apk ipa xap文件虚拟机流 通过将某个语言的虚拟机移植到不同平台上来运行 Web流技术对比 代码转换流技术对比 编译流技术对比 编译流技术总结 编译流比前面的代码转换更进一步 它直接将某个语言编译为普通平台下的二进制文件 这种做法有明显的优缺点 优点 1 可以重用一
2、些实现很复杂的代码2 或许性能会好些 具体要看实现 缺点 1 如果这个工具本身有Bug或性能问题 定位和修改成本会很高2 编译后体积不小 尤其是如果要支持ARMv8和x86的话 虚拟机流技术对比 优点 组件化开发 复用率高 组件丰富以后 ui开发较快 前端式开发利用了React里面的分层和diff机制 js层传给Native层的是一个diff后的json 然后由Native将这个数据映射成真正的布局视图可以和原生页面互相调用 作为一部分嵌入到一个已有的原生app中方便调试 可以进行代码热更新缺点 系统仍然 不得不 依赖原生组件暴露出来的组件和方法动画难以实现目前还不稳定 版本更新太快 可能会出
3、现不兼容的问题 有时候需要手动解决更新也会引入bug一些涉及到底层的东西需要在ios和android单独开发 然后在js层进行调用比原生的性能要差 直观的感觉是复杂的页面在一些配置较低的手机上会有肉眼可见卡顿的感觉 ReactNative 小结 跨平台移动应用的优势 通过细致的规划 在跨平台方案中 能够实现50 80 的代码重用 这样的话 可以实现更快的开发并降低成本 在维护阶段 跨平台开发会带来额外的收益 如果在通用代码库中发现了bug 我们只需修正一次即可 对于通用的代码 只需编写一次单元测试即可 这样我们就能将节省下来的预算用来编写更彻底更充分的单元测试 我们可以使用已有的编程技能 无需
4、学习平台相关的开发语言 对于B2B应用和业务流程自动化应用来说 这种方式是很理想的 因为上线时间和资源利用率比外观和体验更为重要 小结 跨平台移动应用的不足 混合应用可能会导致UI反应迟钝混合应用依赖于回调风格的编程 实现与原生插件的通信 这样会为代码引入不必要的复杂性 同时 对于一些任务 这可能会导致解决方案非常缓慢 很多成功的应用都是以原生应用 不管是Android还是iOS 的方式来开发的 平台都有特定的用户体验方式 设计和构建一款针对多种平台的应用实在是很困难 移动操作系统正在以很快的速度演进 每年会有越来越多的特性添加进来 这为跨平台SDK厂商带来了很多的工作 因为他们需要在操作系统新版本发布之后的很短的时间内 就拿出SDK的新版本 有时候 开发人员也需要花费很长的时间来升级应用 以支持跨平台SDK的新版本 微信小程序 特点 前端开发 js wxml wxss json 开发便捷不用安装 省流量 不占用桌面结合微信 推广更容易局限 小程序只有轻功能 无法承载功能复杂的应用依赖于微信平台 受微信的限制适用场景 实用性小型工具 简单的服务类应用游戏推广 应用推广 总结 跨平台开发不会取代原生开发 但是可以根据需求 使用跨平台开发技术 提高开发效率 降低开发成本 微信小程序也不能代替大部分原生应用 但能够把它作为一个便捷的入口 推广手段 Thankyou