主頁 > 軟體設計 > 快應用技術架構及業務分析

快應用技術架構及業務分析

2021-09-14 10:09:25 軟體設計

2018年3月 華為、小米、Oppo、Vivo、中興、聯想、魅族、一加、努比亞、金立 共10家國內終端廠商成立快應用聯盟,并召開快應用標準發布會,
新成立的快應用聯盟,在快應用技術規范層面做了統一,保證快應用開發者開發的快應用,可以直接在所有快應用聯盟內廠商的終端設備上運行,

2018快應用聯盟終端廠商

2019年中國移動終端公司海信先后加入快應用聯盟,快應用聯盟終端廠商增加到12家,

2019快應用聯盟終端廠商

2021年4月23日,快應用聯盟召開2021塊應用聯盟開發者大會,并宣布酷派與從華為分拆出去的榮耀加入快應用聯盟,

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年2月快應用機型覆寫情況

快應用的機型覆寫、場景覆寫、框架版本(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萬左右,
    快應用Github開發者fork量

基于以上資料推測,快應用發展可能非常不順利資料可能很不樂觀

總結

因快應用聯盟從未公布過,快應用的榷訓、月活已上線快應用數注冊開發者數量以及累計用戶資料(快應用聯盟生態合作伙伴,輕粒子統計也僅在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,

其包結構如下圖所示:
rpk包結構

開發快應用時,快應用工程目錄結構如下所示:

└── src
│   ├── assets          # 公用的資源(Images/Styles/字體...)
│   │   ├──images       # 存盤 png/jpg/svg 等公共圖片資源
│   │   └──styles       # 存放 less/css/sass 等公共樣式資源
│   ├── helper          # 專案自定義輔助各類工具
│   ├── pages           # 統一存放專案頁面級代碼
│   ├── app.ux          # 應用程式代碼的入口檔案
│   └── manifest.json   # 配置應用基本資訊
└── package.json        # 定義專案需要的各種模塊及配置資訊

為保證用戶在快應用中心,點擊對應的快應用時可以迅速打開,供用戶使用,快應用的rpk包大小要求不能超過1M,否則無法通過快應用市場審核,

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環境和原生環境穿梭,

快應用的UI結構

快應用服務框架通過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檔案的包結構,結構一致:
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

玩咖歡聚:
http://www.wankacn.com/

快應用官方:
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

== THE END ==

歡迎關注我的公眾號

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/299897.html

標籤:架構設計

上一篇:《微服務架構設計模式》讀書筆記 | 第8章 外部API模式

下一篇:《微服務架構設計模式》讀書筆記 | 第8章 外部API模式

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more