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
、點贊僅為291
,猜測快應用開發者數量應該比較少,猜測僅有2~3萬左右。
基於以上資料推測,快應用發展可能非常不順利
,資料可能很不樂觀
。
總結
因快應用聯盟從未公佈過,快應用的日活、月活
,已上線快應用數
,註冊開發者數量
以及累計使用者資料
(快應用聯盟生態合作伙伴,輕粒子統計也僅在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
來提供,quickapp_platform.apk
這個App在裝置出廠前已經預裝到 快應用聯盟終端廠商的手機中,終端手機廠商稱之為快應用服務框架
,實際為一個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(快應用執行框架) 來提供。
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