AppCan应用引擎是一个Hybrid App开发框架,具有跨平台、性能高、用户体验好,原生能力扩展性强等特点。能够实现Web App、Native App以及两者混合的Hybrid App的开发。底层框架通过对浏览器内核(WebView、Crosswalk, 腾讯X5等)的封装,实现了多页面渲染技术。同时,实现了标准原生能力扩展机制,便于开发者无限扩展。开发者可以通过标准的Web技术(HTML/CSS/JavaScript)开发移动应用,而原生接口以JS对象的方式呈现。
AppCan Hybrid技术架构可以分为5个层级。最底层是移动操作平台,目前支持iOS和Android。之上是我们封装的各种通用组件库。比例说:统计分析、消息推送、网页解密、网络管理等等。第三层是我们的管理层,主要包括应用管理、插件的统一管理注册、以及相关的插件组件模块。第二层是window manager, 它负责网页面界面渲染和实现原生插件的调用。最上层是开发者使用HTML5来实现应用开发。 采用这样的架构,有很多技术优势:
(1) 采用多窗口架构设计,与原生开发体系相吻合,实现与原生相媲美的效果。
(2) 插件模块化架构设计,原生能力扩展性强。
(3) 应用热修复能力,允许应用不需要重新编译的情况下,对网页功能模块和插件功能模块进行动态替换。这种方式,可以减少后期升级维护应用的复杂度。
(4) 通过在引擎之上,我们结合用户在多终端的体验效果,完成一次开发,任何分辨率下的手机上,都可以保证最好的体验效果。
(5) 同时,平台提供了丰富的基础插件,开发者可以简单快速使用这些组件,集成到自己的应用中。实现应用的快速迭代。
1、引擎内核
2、 页面加载方式
3、应用管理
1)WidgetOne应用管理器是整个widget的运行环境,功能主要包括widget管理、widget内部窗口管理、widget的生命周期管理、消息事件管理、widget间通信机制和widget的运行沙箱管理等。
2)一个HTML5应用称之widget,有唯一的应用ID、完整的生命周期、沙箱机制,通信机制。在引擎中,多个widget应用可以共存。
3)widget间通信机制
4、 应用热修复
App上线之后,需要修复BUG。应用热修复能力,实现widget(HTML/CSS/JS)包和原生插件的动态更新。
5、窗口管理
- 每个widget应用中有一个窗口栈,窗口栈实现了窗口层级的管理。
引擎提供了四种类型的窗口包括:
窗口之间通信:窗口的唯一标识是窗口名称,通过PUB/SUB模式,来实现窗口之间的通信。
窗口特效包括:
6、多终端适配
引擎(Android)会根据不同密度的手机,设置webview的默认字体大小,实现AppCanUI框架中的em值与像素值最佳映射。 基于AppCan的UI框架开发应用即可实现多终端的屏幕适配。
7、插件机制
8、 解密机制
9、崩溃捕获
10、 消息推送
11、 启动图机制
通过AppCan平台生成的应用,可以理解为一个Widget包(即在IDE创建项目是看到的'phone'文件夹)和AppCan引擎框架组成的。通常的情况下,一个应用是由一个Widget+AppCan引擎框架构成。而'n个Widget+AppCan'是针对主widget以及普通widget的一种增强性的扩展机制,可以将具有特定功能的widget封装成一个单独的widget包存放到plugin目录下,然后通过js扩展接口调用,以达到功能扩展的目的。
由于这部分资料在 [开发指导].开源&原生能力开发专题——《Widget插件扩展机制》部分均有详细介绍,在此不作赘述。
AppCan引擎框架提供实现原生能力的机制,而这些实现原生功能的组件称之为插件。目前平台提供了丰富的插件资源,开发者可以根据自身业务需求来对开源插件进行扩展或自行开发。
源码在官网插件库均可下载,分为终端设备系统调用API、界面API、网络API、多媒体API、第三方API等几个类别,足够覆盖移动应用开发中的大部分常用场景。其中包含最新的支付宝插件、百度地图插件,备受关注的QQ登录功能插件、微信分享(支付)插件,以及推送、摄像头、传感器、LBS、二维码、文件读写、网络连接、上传下载、短信、彩信、电话、邮件、图片、其他第三方支付、音频、视频、压缩、原生控件元素等核心功能。
详细实现参考[开发指导].开源&原生能力开发专题——《Android插件扩展机制》和《iOS插件扩展机制》
自定义引擎开发资料在 [开发指导].开源&原生能力开发专题——《自定义引擎机制说明》部分均有详细介绍,在此不作赘述
iOS引擎托管地址: https://github.com/AppCanOpenSource/appcan-ios
Android引擎托管地址: https://github.com/AppCanOpenSource/appcan-android
AppCan引擎插件开源遵循LGPL(GNU宽通用公共许可证)第三版: 英文版https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
阅读各章节,请看左侧导航
自定义插件扩展详细资料可查看:http://newdocx.appcan.cn/dev-guide/openSource-native-capability-dev/widget-plugin
iOS Native插件扩展机制请了解:http://newdocx.appcan.cn/dev-guide/openSource-native-capability-dev/ios-native
Android Native插件扩展机制请了解:http://newdocx.appcan.cn/dev-guide/openSource-native-capability-dev/android-native