做安卓时间长了,接触到各种各样的框架,前前后后遇到了很多问题,这里顺便记录一下那些年在安卓开发的发展过程中的那些跨平台开发技术框架,大致如下:

如有错误,欢迎指正。

(一)适合WebApp的一些框架
1、Cordova

优点:

开源免费,社区生态成熟,插件丰富
支持离线场景应用
开发工具选择空间大

缺点:

只提供基础访问设备的接口,需要自己搭配其他UI框架和JavaScript框架来搭配

2、Ionic

优点:

国外的一款接近原生的Html5移动App开发框架,免费开源。
漂亮的界面,追求性能,专注原生,免费开源
Angular JS MVVM 开发理念,数据双向绑定
基于Cordova,可以使用 Cordova 的插件

缺点:

需要掌握 HTML + CSS + Angular JS ,学习路线陡峭
Ionic 框架相比于原生的 Cordova 有所差异,Cordova 某些官方插件可能不适用于Ionic

3、Dcloud

优点:

国内厂商,中文文档
对HTML5的性能、工具、能力都做了深入扩展,提供 IDE 、云服务等帮助节省时间
MUI 更贴近国内App使用习惯,提供模块的详细例子,如登录,个人中心

缺点:

部分操作需要具备原生开发经验,如离线打包App
新产品仍然有bug,还需改进

4、小程序

2016年9月21日,微信小程序正式开启内测。2017年1月9日0点,微信第一批小程序正式低调上线。
微信小程序,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。

优点:

1.即用即走——这个是从微信小程序上线就开始打的概念。即用即走使得小程序可以代替许多APP,或是做APP的整体嫁接,或是作为阉割版功能的承载体。
2.倚靠微信流量——相比APP,小程序一个突出的优点是完全嵌入了微信的聊天、公众号体系,完美进行微信体系内的流量引导。这一方面令小程序更加容易获客,另一方面也可以借助微信的成熟社交网络达到爆发式传播。
3.连接线上线下——连接线上线下场景也是微信小程序重要的一环,甚至最先开始为了推动线下习惯的养成,小程序在线上场景方面做了较强的限制。由于人们用微信扫描二维码的习惯培养得比较好,小程序相比APP更容易达成线上线下场景的连接与互动。

缺点:

1.留存——虽然有部分小程序已经杀出重围,但是普遍来讲,主打“即用即走”的小程序在用户留存上仍存在很大的提升空间。阿拉丁发布的小程序白皮书中显示,小程序的平均次日留存在13%左右,但是双周留存骤降到仅有1%。轻易拥有的也不在意失去,这大概是小程序目前的一个症结所在。
2.受控于微信——比起APP,尤其是安卓版的高自由度,小程序要面对很多来自微信的限制,从功能接口,甚至到类别内容,都要接受微信的管控,部分敏感内容还很容易遭受封禁威胁。

部分参考链接:https://www.zhihu.com/question/263816362/answer/274417734


5、PWA

PWA(Progressive Web App)是 Google 于 2016 年提出的概念,2017 年已被迅速采用。
PWA全称Progressive Web App,即渐进式Web应用。

一个PWA应用首先是一个网页, 可以通过Web技术编写出一个网页应用. 随后添加上App ManifestService Worker来实现PWA的安装和离线等功能。

解决了哪些问题?

可以添加至主屏幕,点击主屏幕图标可以实现启动动画以及隐藏地址栏
实现离线缓存功能,即使用户手机没有网络,依然可以使用一些离线功能
实现了消息推送
它解决了上述提到的问题,这些特性将使得 Web 应用渐进式接近原生 App。
关于PWA更多详情介绍可以看以下博客介绍:
https://segmentfault.com/a/1190000012353473

PWA的优势

可以将app的快捷方式放置到桌面上,全屏运行,与原生app无异
能够在各种网络环境下使用,包括网络差和断网条件下,不会显示undefind
推送消息的能力
其本质是一个网页,没有原生app的各种启动条件,快速响应用户指令

PWA存在的问题

支持率不高:现在ios手机端不支持pwa,IE也暂时不支持
Chrome在中国桌面版占有率还是不错的,安卓移动端上的占有率却很低
各大厂商还未明确支持pwa
依赖的GCM服务在国内无法使用
微信小程序的竞争

6、Instant App

2016年的Google大会上,Google发布了有关Instant App的最新技术。千呼万唤之下,号称“Google版小程序”的Instant App,终于在2017年面向用户开放使用了。Instant Apps是Google 推出的应用特性。它可在用户没有下载、安装 App的前提下,直接加载App 的部分模组,并直接运行、使用,无需下载、安装整个App。
Instant App详情介绍可以看以下两个博客介绍:
http://36kr.com/p/5102782.html
https://segmentfault.com/a/1190000010906162

优势:

1.相对于小程序来说,谷歌官网要求每个Instant App程序最大不得超过4M的大小。但是小程序没有严格限制。
2.Instant App从用户体验角度来看,要比小程序好很多,体验起来让用户感觉,有种“我并没有安装这个程序,就能体验到和程序同样的丝滑体验”的感觉。

遇到的困难:

xx上网(你懂的)
Google Service不能正常的推广
具有Google Service框架的手机
完整应用必须提前安装到Google Play上
部署信息验证文件的网站,需具有https方式访问功能的网站。

另外还有一些比较过时的框架,例如:PhoneGap(支持大部分系统,不同平台需要搭建不同开发环境,需要使用三方的UI,需要使用第三方UI和扩展功能插件)、AppCan(闭源,商业化产品,免费版限制太多,无法在本地发布)。

此部分内容来源于:https://blog.csdn.net/jingwen3699/article/details/68922923


(二)适合移动端App的一些框架
1、React Native

Facebook于2015年3月份在github发布了React Native第一个正式版本为v0.1.0

特色:

Facebook 出品一个移动端开发框架,可以最大限度的接近原生的效果。
能够在Javascript和React的基础上获得完全一致的开发体验,构建原生APP。
仅需学习一次,编写任何平台。(Learn once, write anywhere)

缺点:

初次学习成本高
必须在不同平台下写两套代码,依赖暴露的接口

2、Weex

阿里巴巴于2017年4月份在github发布了Weex第一个正式版本为0.11.0-rc0
Weex的github地址 https://github.com/apache/incubator-weex

特点:

Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。

缺点:
控件太少,基本只能实现最基本的效果
上手难度大,如果是前端和移动端都比较懂上手很快。
随着项目变大,编译速度会指数型上升。

此部分内容来源于:https://blog.csdn.net/jupiterxx/article/details/80026909


3、Flutter

详细介绍请看我写的博客 Flutter入门详解到填坑指南

(三)开发语言的多样性

到目前为止,能够开发Android的语言有很多种,如下所示:

Java还有其他JVM语言kotlin Groovy Scala
C/C++(也是废话)
HTML5(又是废话)
Dart(Flutter框架的开发语言)
Python(著名项目fq.router2)
Lua(bilibili客户端←_←)
QML(Qt项目的界面描述语言,同时可以用C++/js写业务代码,还能Ajax呢)
TypeScript
C#
Python
PHP