2018年3月 华为、小米、Oppo、Vivo、中兴、联想、魅族、一加、努比亚、金立 共10家国内终端厂商成立快应用联盟,并召开快应用标准发布会。
新成立的快应用联盟,在快应用技术规范层面做了统一,保证快应用开发者开发的快应用,可以直接在所有快应用联盟内厂商的终端设备上运行。

2019年中国移动终端公司、海信先后加入快应用联盟,快应用联盟终端厂商增加到12家。

2021年4月23日,快应用联盟召开2021块应用联盟开发者大会,并宣布酷派与从华为分拆出去的荣耀加入快应用联盟。

截止到2021年9月,快应用联盟终端厂商数量增加到14家,分别为:
华为、小米、Oppo、Vivo、中兴、联想、魅族、一加、努比亚、金立、中国移动终端公司、海信、酷派、荣耀。
2017年1月 微信正式推出小程序,截止到2017年底 微信小程序月活已突破2亿,上线小程序已经超过58万个,微信小程序开发者超过100万,微信小程序用户累计已超过 4 亿。
微信拥有超过10亿的使用用户,面对如此庞大的用户基数,与微信小程序的蓬勃发展,终端厂商联合起来组成快应用联盟,主要有以下两方面的原因:
应用分发、应用预装和应用营销 方面巨大收益:微信App直接转变为应用分发市场,加之微信小程序的蓬勃发展,直接影响了终端厂商在应用分发方面的收益。争夺应用分发入口的控制权:快应用宣称 以Web前端语言开发原生应用,用户无需下载安装,即点即用,享受原生应用的性能体验。
快应用在实现上使用HTML5语言、ES6标准的js脚本、CSS3样式标准以及Flexbox布局标准进行开发,使用JS语言调用Android Framework提供的应用程序组件进行应用的渲染,并且以独立进程的形式运行在Android系统中,拥有与原生应用相近的用户使用体验。

在快应用联盟的手机设备中,不同的设备厂商,其快应用入口可能略有不同。但基本存在于手机的应用市场、应用市场——快应用中心、负一屏、桌面快应用图标等位置。
以下为华为设备,快应用入口举例:


快应用运营方:
机型支持情况:
截止到2020年9月,快应用联盟官方论坛公布的支持快应用的设备以及机型如下图所示:

快应用的机型覆盖、场景覆盖、框架版本(2020.09更新):
https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=2524
发展状况 2019:
快应用联盟 生态合作方之一的轻粒子统计,曾于2020年1月14日公布《2019快应用行业报告》。
报告指出:
月活3亿、应用开发者1.5万。生活服务类快应用、实用工具类快应用 。
发展状况 2020:
快应用运营方 玩咖欢聚 于2021年4月20日,举办快应用联盟开发者大会,其公布的数据如下:
注:
以上公布的数据中,在网设备覆盖量为12亿,指的是快应用联盟设备出货量,也就是快应用联盟终端厂商累计卖出的设备数量,这些设备中仅预装了快应用运行框架的APP,可以为快应用的运行提供运行环境,并非是累计用户12亿。
2021年4月20日快应用联盟开发者大会公布的数据中,未包含任何快应用的日活、月活,已上线快应用数,注册开发者数量以及累计用户数据等关键数字。
快应用社区活跃度:
从当前快应用开发社区、快应用Github活跃程度,可以猜测快应用发展可能非常不顺利,各种关键数据可能非常不乐观。
注册会员数量 仅2926、 快应用跟帖数量 仅7253。快应用开发者社区比较冷淡,开发者关注度不高。
sample开发案例fork数量 仅为205、点赞仅为291,猜测快应用开发者数量应该比较少,猜测仅有2~3万左右。
基于以上数据推测,快应用发展可能非常不顺利,数据可能很不乐观。
总结
因快应用联盟从未公布过,快应用的日活、月活,已上线快应用数,注册开发者数量以及累计用户数据(快应用联盟生态合作伙伴,轻粒子统计也仅在2020年1月公布过一次2019年底快应用的月活、注册开发者人数),其他关键数据均无法获取。
仅就目前掌握的数据,就快应用发展现状进行推测:快应用发展可能非常不顺利 , 注册开发者等数据可能很不乐观 。
快应用以Web前端语言开发原生应用,使用HTML5语言、ES6标准的js脚本、CSS3样式标准以及Flexbox布局标准进行开发,使用JS语言调用Android Framework提供的应用程序组件进行应用的渲染,并且以独立进程的形式运行在Android系统中,拥有与原生应用相近的用户使用体验。
以下是我基于快应用开发文档、反编译快应用运行框架(quickapp_platform.apk)以及参考React Native实现原理绘制的快应用技术架构图。

快应用打包后为一个xxx.rpk文件,并且大小包不超过1M。
其包结构如下图所示:

开发快应用时,快应用工程目录结构如下所示:
└── src
│ ├── assets # 公用的资源(Images/Styles/字体...)
│ │ ├──images # 存储 png/jpg/svg 等公共图片资源
│ │ └──styles # 存放 less/css/sass 等公共样式资源
│ ├── helper # 项目自定义辅助各类工具
│ ├── pages # 统一存放项目页面级代码
│ ├── app.ux # 应用程序代码的入口文件
│ └── manifest.json # 配置应用基本信息
└── package.json # 定义项目需要的各种模块及配置信息
为保证用户在快应用中心,点击对应的快应用时可以迅速打开,供用户使用,快应用的rpk包大小要求不能超过1M,否则无法通过快应用市场审核。

快应用的运行环境是 一个已经预装到终端手机的 App (quickapp_platform.apk):
quickapp_platform.apk来提供,quickapp_platform.apk这个App在设备出厂前已经预装到 快应用联盟终端厂商的手机中,终端手机厂商称之为快应用服务框架,实际为一个App。快应用号称“以Web前端语言开发原生应用,拥有与原生应用相近的用户使用体验”,那么“通过JS调用Java Native API就是一个待解决的问题”。
这一点上,快应用与React Native的实现是一致的,通过JavaScriptCore来实现。JavaScriptCore是开源项目WebKit代码的一部分,JavaScriptCore是WebKit内嵌的JS引擎。

快应用服务框架通过JavaScriptCore开源框架实现与Android原生代码的通信,实现从JS的API到Java API的调用,从而实现使用Android原生应用组件进行渲染。
为保证用户在快应用中心,点击对应的快应用时可以迅速打开,供用户使用,快应用的rpk包大小要求不能超过1M,否则无法通过快应用市场审核。
这里以小米快应用中心,点击下载快应用抓包进行举例说明。
打开小米快应用中心,其效果图如下所示:

通过抓包,可以查看小米快应用中心列表数据。打开快应用中心时,应用列表数据中包含每个快应用的 包名 以及 描述信息 。

以快应用 “荒野日记” 为例,用户点击 “秒开” 按钮时,快应用中心根据快应用包名请求对应快应用的下载地址。

仍然以快应用 “ 荒野日记 ” 为例,获取到快应用的下载地址后,直接下载对应的快应用。
荒野日记快应用下载地址:
https://t2.market.xiaomi.com/download/Mina/0b7295bd94ba17ad2cd7598ad80dd7ffffa435403
下载后的快应用文件为 0b7295bd94ba17ad2cd7598ad80dd7ffffa435403,该文件虽然无扩展名,但实际一个压缩包文件(也是一个.rpk文件)。

给下载后的快应用 0b7295bd94ba17ad2cd7598ad80dd7ffffa435403 添加一个扩展名:

解压快应用(解压.rpk文件),可以看到其符合一个.rpk文件的包结构,并且快应用中基本均为代码实现,几乎没有图片资源(为了减小快应用xxx.rpk文件的大小,提升用户下载使用快应用的体验)。

再对比一下.rpk文件的包结构,结构一致:

用户在快应用中心点击某个快应用时,快应用中心仅仅下载了一个小于1M的快应用程序入口,快应用的其他大部分媒体资源存放于远程服务端(随用户使用按需逐步下载);
下载完成的快应用程序,其运行环境由一个叫做快应用运行框架的APP提供(快应用运行框架App在手机设备出厂时,已经预装到快应用联盟的设备中),从而在用户感知上免去了快应用的下载与安装过程,达到用户快速使用的目的。
同时由于快应用程序包小于1M,快应用功能承载能力有限,仅包含对应原生APP的部分功能或仅为某个原生游戏APP的预览版本。
快应用与微信小程序在技术实现上基本没有差别。
quickapp_platform.apk 这个App在设备出厂前已经预装到 快应用联盟终端厂商的手机中,终端手机厂商称之为 快应用服务框架 ,实际为一个App。
万咖壹联:
http://www.wankaonline.com/home
快应用官方:
https://www.quickapp.cn/
快应用介绍:
https://www.quickapp.cn/course
2019年快应用行业报告:
[https://statres.qinglizi.cn/quickapp_statistics)
快应用的机型覆盖、场景覆盖、框架版本(2020.09更新):
https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=2524
React Native运行原理解析:
https://cloud.tencent.com/developer/article/1036325
详解React Native渲染原理:
https://www.jianshu.com/p/7e7b462c187b
深入理解JavaScriptCore:
https://cloud.tencent.com/developer/article/1406122
JavaScriptCore 整体介绍:
https://zhuanlan.zhihu.com/p/29663994
NativeJS理解和使用:
https://www.jianshu.com/p/7b022c176a0b

对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------