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
,加之微信小程式的蓬勃發展,直接影響了終端廠商在應用分發方面的收益。應用分發市場
- 阻擊微信小程式
微信擁有超過10億的使用使用者,面對如此龐大的使用者基數,單打獨鬥并不是終端廠商最好的選擇,結盟對抗、制定統一标準、共同推廣,将應用分發入口牢牢地把握在自己手中,成為了國内終端廠商必然的選擇。争奪應用分發入口的控制權
二、快應用介紹
快應用宣稱
以Web前端語言開發原生應用
,
使用者無需下載下傳安裝,即點即用,享受原生應用的性能體驗
。
快應用在實作上使用
HTML5語言
ES6标準的js腳本
CSS3樣式标準
以及
Flexbox布局标準
進行開發,
使用JS語言調用Android Framework提供的應用程式元件進行應用的渲染
,并且
以獨立程序的形式運作在Android系統中
擁有與原生應用相近的使用者使用體驗
2.1 快應用入口
在快應用聯盟的手機裝置中,不同的裝置廠商,其快應用入口可能略有不同。但基本存在于手機的
應用市場
應用市場——快應用中心
負一屏
桌面快應用圖示
等位置。
以下為華為裝置,快應用入口舉例:
2.2 快應用現狀
快應用營運方:
快應用營運方為萬咖壹聯的子公司玩咖歡聚。
機型支援情況:
截止到2020年9月,快應用聯盟官方論壇公布的支援快應用的裝置以及機型如下圖所示:
快應用的機型覆寫、場景覆寫、架構版本(2020.09更新):
https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=2524
發展狀況 2019:
快應用聯盟 生态合作方之一的
輕粒子統計
,曾于2020年1月14日公布
《2019快應用行業報告》
報告指出:
- 截止到2019年12月,快應用
月活3億
應用開發者1.5萬
- 快應用數量占比最多的兩個品類依次為
生活服務類快應用
實用工具類快應用
生活服務類快應用是與使用者衣食住行相關的場景,比如附近就餐、旅館推薦、打車服務、天氣服務等;
實用工具類快應用,如交話費、寄快遞(小米手機負一屏 快應用卡片 菜鳥裹裹)。
發展狀況 2020:
快應用營運方 玩咖歡聚 于2021年4月20日,舉辦快應用聯盟開發者大會,其公布的資料如下:
- 2020快應用在網裝置覆寫量超過12億;
- 2020年快應用使用者留存達70.33%;
- 與去年相比,活躍使用者穩步增長37%,活躍快應用數量穩步增長46.7%,實用工具成為使用者最為活躍的快應用品類。
注:
以上公布的資料中,在網裝置覆寫量為12億,指的是快應用聯盟裝置出貨量,也就是
快應用聯盟終端廠商累計賣出的裝置數量
,這些裝置中僅預裝了
快應用運作架構的APP
,可以為快應用的運作提供運作環境,并非是累計使用者12億。
2021年4月20日快應用聯盟開發者大會公布的資料中,未包含任何
快應用的日活、月活
已上線快應用數
注冊開發者數量
累計使用者資料
等關鍵數字。
快應用社群活躍度:
從目前快應用開發社群、快應用Github活躍程度,可以猜測快應用發展可能非常不順利,各種關鍵資料可能非常不樂觀。
- 快應用開發者社群
注冊會員數量 僅2926
。快應用開發者社群比較冷淡,開發者關注度不高。快應用跟帖數量 僅7253
- 快應用Github對應的
sample開發案例fork數量 僅為205
,猜測快應用開發者數量應該比較少,猜測僅有2~3萬左右。點贊僅為291
基于以上資料推測,
快應用發展可能非常不順利
資料可能很不樂觀
總結
因快應用聯盟從未公布過,快應用的
日活、月活
已上線快應用數
注冊開發者數量
累計使用者資料
(快應用聯盟生态合作夥伴,輕粒子統計也僅在2020年1月公布過一次2019年底快應用的月活、注冊開發者人數),其他關鍵資料均無法擷取。
僅就目前掌握的資料,就快應用發展現狀進行推測:
快應用發展可能非常不順利 , 注冊開發者等資料可能很不樂觀
- 從Github與社群活躍情況推測,快應用注冊開發者可能僅2~3萬;
- 快應用的月活資料,更多的是靠華為、小米等終端廠商負一屏的工具類卡片來支撐,快應用使用者可能都不清楚自己使用過快應用,更不用說自己到快應用中心查找相應的快應用(親身使用發現:快應用中心 在終端應用商城App的入口也較深,不易被使用者發現)。
三、快應用技術架構
快應用
以Web前端語言開發原生應用
,使用
HTML5語言
ES6标準的js腳本
CSS3樣式标準
Flexbox布局标準
使用JS語言調用Android Framework提供的應用程式元件進行應用的渲染
以獨立程序的形式運作在Android系統中
擁有與原生應用相近的使用者使用體驗
3.1 技術架構
以下是我基于
快應用開發文檔
反編譯快應用運作架構(quickapp_platform.apk)
以及參考
React Native實作原理
繪制的快應用技術架構圖。
3.1.1 快應用(xxx.rpk)
快應用打包後為一個
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
,否則無法通過快應用市場稽核。
3.1.2 快應用服務架構
快應用的運作環境是 一個已經預裝到終端手機的 App (
quickapp_platform.apk
):
- 與微信小程式類似,微信小程式的運作環境由微信App來提供。
- 而快應用的運作環境由
來提供,quickapp_platform.apk
這個App在裝置出廠前已經預裝到 快應用聯盟終端廠商的手機中,終端手機廠商稱之為quickapp_platform.apk
,實際為一個App。快應用服務架構
3.1.3 快應用JS與Java Native API通信
快應用号稱“
以Web前端語言開發原生應用,擁有與原生應用相近的使用者使用體驗
”,那麼“
通過JS調用Java Native API就是一個待解決的問題
”。
這一點上,快應用與
React Native
的實作是一緻的,通過
JavaScriptCore
來實作。JavaScriptCore是開源項目WebKit代碼的一部分,JavaScriptCore是WebKit内嵌的JS引擎。
- JavaScriptCore可以實作在原生代碼裡面執行JavaScript 而不用通過浏覽器。
-
JavaScriptCore可以把原生對象注入到JavaScript環境中。
JavaScriptCore提供了 JS 代碼與原生代碼互動的能力,通過 JavaScriptCore可以實作兩端的對象暴露,使得代碼可以不斷地在JS環境和原生環境穿梭。
快應用服務架構通過
JavaScriptCore
開源架構實作與
Android原生代碼的通信
,實作從JS的API到Java API的調用,進而實作使用Android原生應用元件進行渲染。
3.2 快應用如何下載下傳
快應用的rpk包大小要求不能超過1M
這裡以小米快應用中心,點選下載下傳快應用抓包進行舉例說明。
3.2.1 快應用中心
打開小米快應用中心,其效果圖如下所示:
3.2.2 快應用清單資料
通過抓包,可以檢視小米快應用中心清單資料。打開快應用中心時,應用清單資料中包含每個快應用的
包名
描述資訊
3.2.3 快應用下載下傳位址
以快應用 “
荒野日記
” 為例,使用者點選 “
秒開
” 按鈕時,快應用中心
根據快應用包名
請求
對應快應用的下載下傳位址
3.2.4 下載下傳快應用
仍然以快應用 “ 荒野日記 ” 為例,擷取到快應用的下載下傳位址後,直接下載下傳對應的快應用。
荒野日記快應用下載下傳位址:
https://t2.market.xiaomi.com/download/Mina/0b7295bd94ba17ad2cd7598ad80dd7ffffa435403
下載下傳後的快應用檔案為 0b7295bd94ba17ad2cd7598ad80dd7ffffa435403,該檔案雖然無擴充名,但實際一個壓縮封包件(也是一個.rpk檔案)。
給下載下傳後的快應用 0b7295bd94ba17ad2cd7598ad80dd7ffffa435403 添加一個擴充名:
解壓快應用(解壓.rpk檔案),可以看到其符合一個.rpk檔案的包結構,并且快應用中基本均為代碼實作,幾乎沒有圖檔資源(為了減小快應用xxx.rpk檔案的大小,提升使用者下載下傳使用快應用的體驗)。
再對比一下.rpk檔案的包結構,結構一緻:
3.3 快應用原理總結
使用者在
快應用中心
點選某個快應用時,
快應用中心
僅僅下載下傳了一個
小于1M的快應用程式入口
,快應用的其他大部分媒體資源存放于遠端服務端(随使用者使用按需逐漸下載下傳);
下載下傳完成的快應用程式,其運作環境由一個叫做
快應用運作架構的APP
提供(
快應用運作架構App
在手機裝置出廠時,已經預裝到快應用聯盟的裝置中),進而在使用者感覺上免去了
快應用
的下載下傳與安裝過程,達到使用者快速使用的目的。
同時由于
快應用程式包小于1M
快應用功能承載能力有限
,僅包含對應
原生APP的部分功能
或僅為
某個原生遊戲APP的預覽版本
3.4 快應用 VS 微信小程式
快應用
與
微信小程式
在技術實作上基本沒有差别。
- 微信小程式的運作環境由 微信App 來提供。
- 快應用的運作環境由 quickapp_platform.apk(快應用運作架構) 來提供。
這個App在裝置出廠前已經預裝到 快應用聯盟終端廠商的手機中,終端手機廠商稱之為 快應用服務架構 ,實際為一個App。quickapp_platform.apk
參考
萬咖壹聯:
http://www.wankaonline.com/home
玩咖歡聚:
http://www.wankacn.com/
快應用官方:
https://www.quickapp.cn/
快應用介紹:
https://www.quickapp.cn/course
2019年快應用行業報告:
[https://statres.qinglizi.cn/quickapp_statistics)
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