AppCan 移动应用引擎开源说明和下载地址

AppCan 源码托管 地址: https://github.com/AppCanOpenSource


关于AppCan引擎开源协议
AppCan引擎开源遵循LGPL宽通用公共许 可 证协议第三版:英文版
html

 
【应用引擎的技术原理】
 
经过对各大手机操做系统(如iOS、Android)和系统中浏览器引擎底层Webview及其API的封装和扩展,将HTML标准中不提供支持的本地功能(好比摄 像头,短信,电话等)以Javascript API接口的形式开放给HTML页面调用,同时提供一套完整的Callback机制,实现HTML页面直接与操做系统底层的交互通讯,Javascript脚本语言直接与操做系统C/C++1/JAVA/Object-C等原生语言之间通讯,实现系统与HTML页面的无缝融合;经过在UI层次上实现一套模拟系统级别的应用(Widget)及应用管理机制、窗口(Window)及多窗口管理机制,达到基于HTML5开发移动应用的目的,实现核心引擎的跨平台能力。
 
 
 
【应用引擎的整体架构】
 
应用引擎是一个支持HTML5应用运行的支撑平台,经过引擎在各平台上的适配来达到HTML5应用的跨平台执行。核心引擎主要由 WidgetOne应用管理器 Widget   插件扩展机制 ,以及 Native 插件扩展机制 三大部分组成。
 
1、WidgetOne应用管理器
 
WidgetOne应用管理器 是整个Widget的运行环境,功能主要包括Widget管理、Widget内部窗口管理、Widget的生命周期管理、消息事件管理、Widget间通讯机制和Widget的运行沙箱管理等。
全部的运行的Widget都有一个公共的父窗口WidgetContainer,Widget经过Widget的包名来标识,Widget之间能够相互调用,支持Widget间窗口切换和窗口动画,一个复杂的HTML5 应用能够由多个Widget来组成。而每一个Widget有多个窗口组成,窗口经过ID/NAME来标识,每一个Widget内部的窗口系统都相互独立,窗口之间支持相互调用,参数传递,窗口动画,窗口预加载机制,浮动窗口机制等
 
      
所以,多窗口机制在开发过程当中很重要,根据不一样的name来分辨不一样的window(每个应用中,有且只有一个name为'root'的窗口,通常把应用加载的第一个窗口默认的命名为'root')。在不关闭窗口的状况下,它们之间能够经过uexWindow.open实现切换,而不用从新加载html页面。为了实现一些更好的用户体验,扩展了原生UI效果,好比ActionSheet,弹动效果等。它主要引进了主窗口和浮动窗口,这样多的目的就是固定top和bottom部分,避免这两部分随着滚动条滚动。
 
窗口的实现原理:
(1)将设备屏幕可操做区域转换为Window的概念,经过拆分,将设备屏幕(Window)分红了Top,Bottom,Main,PopOver(浮动窗口)区域,每一个区域由独立的WebView组成,相互独立,又相互通融,实现Window内的UI元素自由定义。
(2)经过模拟系统UI元素压栈的方式(如Android平台的Activity栈),将建立的Window压入栈堆,经过对Window的命名,位置,大小,透明度,显隐等属性的控制,实现一套应用内支持建立多个Window,并对每一个Window生命周期进行单独管理的机制,灵活管理Window的建立,显示,隐藏,复用,销毁,内存回收等。
(3)实现一套浮动窗口机制。即,同一个Window中理论上能够建立足够多个数的浮动窗口,而且根据建立的前后顺序,覆盖到当前Window中来,造成一块独立的区域,解决了手机上不支持局部div滚动,不支持IFrame高度定义等的硬伤,以及配套的上下拉刷新效果,OAuth验证机制等功能的加入,加强了用户体验和为开发者下降了开发难度。
(4)实现一套窗口间和窗口内浮动窗口间的交互机制。经过扩展的Javascript对象uexWindow对象下的诸多API,实现窗口间的交互。如uexWindow.evaluateScript(String inWindowName, String inType, StringinScript),可在任何一个Window中指定要在一个名为inWindowName的Window中执行Javascript函数;而uexWindow.evaluatePopoverScript(String inWndName, String inPopName,String inScript)则可在任何一个Window中指定要在一个名为inWndName的窗口下的名为inPopName的浮动窗口中执行Javascript函数。
(5)实现窗口生命周期内的过分动画效果。如窗口建立并被添加到屏幕上时,指定一个从左到右的切入效果,窗口被关闭销毁时,指定一个从右到左的切出效果等等。基本达到了与系统级别UI界面切换效果的一致。
 
2、Widget 插件扩展机制

 

经过AppCan平台生成的应用,能够理解为一个Widget包(即在IDE建立项目是看到的'phone'文件夹),和一个 AppCan平台中间件组成的。一般的状况下,一个应用是由一个Widget+AppCan构成,那么,有没有可能说'n个Widget+AppCan' 的机制呢,答应是确定的,这就是Widget 插件机制,是针对主widget以及普通widget 的一种加强性的扩展机制,能够将具备特定功能的widget封装成一个单独的widget包存放到plugin 下,而后经过js扩展接口调用,以达到功能扩展的目的。咱们把'1个Widget+AppCan'中的那一个Widget叫作'主Widget',而另外 的'n-1'个Widget存在于主Widget的'plugin'目录下。
 
3、Native插件扩展机制
 
有了Native插件的配合使用,开发者只要写最简单的HTML,CSS和JS,就能够开发出一个体验效果和原生无差异的应用。
 
首先,AppCan开放了原生插件扩展机制,灵活的自定义插件扩展架构,方便开发者快速集成自定义功能到应用开发中。开发者将自定义原生插件进行开发和上传,便可在开发中直接调用。
      
其次,对目前平台提供的数十种应用插件进行开源,开发者能够根据自身业务需求来对开源插件进行扩展,或自行开发。
源码在官网插件库都可下载,分为终端设备系统调用API、界面API、网络API、多媒体API、第三方API等几个类别,足够覆盖移动应用开发中的大部分经常使用场景。其中包含新的支付宝插件和新百度地图SDK 封装的百度地图插件,备受关注的 QQ 登陆功能插件、微信分享(支付)插件,以及推送、摄 像头、传感器、LBS、二维码、文件读写、网络链接、上传下载、短信、彩信、电话、邮件、图片、第三方支付、音频、视频、压缩、原生控件元素等核心功能。
 
 
自定义插件扩展详细资料可查看:http://newdocx.appcan.cn/index.html?templateId=257
iOS Native插件扩展机制请了解:http://newdocx.appcan.cn/index.html?templateId=261
Android Native插件扩展机制请了解:http://newdocx.appcan.cn/index.html?templateId=247
 
文档已经发布,可在文档中心查看,附上连接地址:http://newdocx.appcan.cn/index.html?templateId=410
 
Appcan的框架和发展愈来愈稳定,闲余时间能够学习下。
相关文章
相关标签/搜索