字节跳动移动端自动化实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 字节小程序的框架设计
与实践
大楼|字节跳动应用开发套件 MARS 研发工程师
2. 01 我们的小程序有什么特点?
02 小程序是怎么跑起来的?
03 小程序是如何同时服务于多个产品的?
2
2
3. 3
我们的小程序有什么特点?
4. 我们的小程序有什么特点?
小程序
www.volcengine.com
5. 小程序 · 核心优势
01 结合小程序的能力,以及高动态化的特性,实现定制化、多样
化、可复访、可留存的交互场景,丰富应用产品的生态和玩法。
02 小程序开发成本低,一套代码可同时跨平台上线多款产品,同
时支持微信小程序一键迁移。
03 结合性能优化的效果,可以服务于一些商业化场景,提高转化
率和变现效率。
www.volcengine.com
6. 字节产品案例 - 小程序 x 抖音入口
短视频挂载
评论区顶部
搜索直达
直播挂载
www.volcengine.com
7. 字节产品案例 - 小程序 x 抖音玩法
影视宣发 服务分发
宣传视频-购票 视频-相关服务
内容延展 娱乐互动
视频-新闻资讯/泛知识 玩法介绍-小游戏/娱乐测试
直播 广告投放
直播-小程序 广告-活动/商品⻚
www.volcengine.com
8. 8
小程序是怎么跑起来的?
9. 小程序基本运行流程
1. 创建项目、开发、发布
2. 用户打开抖音
3. 请求平台配置服务
4. 按需更新 JSSDK
5. 统一格式 Schema 唤起小程序
6. 请求基础信息服务
7. 初始化运行环境
8. 包加载 (流式、分包)
9. 基础能力调用
小程序 / 小游戏代码
新建小程序
开发者工具 IDE
调试、编译、上传发布
小程序 / 小游戏
10.小程序成功展示并运行
11.业务能力调用
www.volcengine.com
10. 小程序基本运行流程
1. 创建项目、开发、发布
2. 用户打开抖音
3. 请求平台配置服务
4. 按需更新 JSSDK
入口跳转链接
Schema
6. 请求基础信息服务
小程序 / 小游戏
CDN
下载
8. 包加载 (流式、分包)
10.小程序成功展示并运行
11.业务能力调用
小程序基础库 JSSDK
下载 ( 流式 )
CallBack , Publish
InvokeMethod
7. 初始化运行环境
9. 基础能力调用
CallBack
tt.navigateTo, tt.getSystemInfo, tt.chooseImage
更新基础库 (JSSDK)
5. 统一格式 Schema 唤起小程序
更新游戏包
CDN
小程序客户端 SDK
Settings
平台配置服务
Meta
回调
请求基础库等
配置信息
定制化 API 调用
抖音客户端
请求
小程序
基础信息
小程序
基础信息服务
www.volcengine.com
11. 11
小程序是如何服务于多个产品的?
12. 12
小程序框架设计
13. 框架组件化设计
接入层
Platform
应用层
Application
业务基础层
Business Utils
通用基础层
Utils
标准业务接入模板 分发入口 注入
小程序 / 小游戏依赖模板 跳转链接 (Schema) 定制能力
容器 Container
开放能力 OpenAPIs
小程序 小游戏 tt.getSystemInfo tt.pay
高性能渲染 自定义扩展 tt.getLocation tt.login
业务基础能力 CPAPIs
加载基础 Loader / AppBase
用户账户模块 定位业务模块 ? Meta 服务 包管理 ?
引擎环境模块 授权管理模块 沙盒管理 ? 启动管理
通用基础能力 Service
通用工具模块 Base
基础网络能力 埋点能力 ? 队列管理模块 数据存储模块
音频能力 ? 定位基础能力 线程管理模块 定时器 ⏰
www.volcengine.com
14. 分层框架
通用基础层
Utils
通用基础能力
Service
基
础
网
络
能
力
埋
点
能
力 音
频
能
力
? ?
数
据
存
储
模
块
线
程
管
理
模
块
OpenAPIs Service Custom Implementation
tt.reportAnalytics 埋点能力 ? BDTeaAppLogPlatform
定
位
基
础
能
力
通用工具模块
Base
队
列
管
理
模
块
埋点上报 tt.reportAnalytics
定
时
器
⏰
定位能力 tt.getLocation
OpenAPIs CPAPIs Service
tt.getLocation 定位授权管理模块 定位基础能力
Base Base
数据存储模块 队列管理模块
www.volcengine.com
15. 框架组件化设计
接入层
Platform
应用层
Application
业务基础层
Business Utils
通用基础层
Utils
标准业务接入模板 分发入口 注入
小程序 / 小游戏依赖模板 跳转链接 (Schema) 定制能力
容器 Container
开放能力 OpenAPIs
小程序 小游戏 tt.getSystemInfo tt.pay
高性能渲染 自定义扩展 tt.getLocation tt.login
业务基础能力 CPAPIs
加载基础 Loader / AppBase
用户账户模块 定位业务模块 ? Meta 服务 包管理 ?
引擎环境模块 授权管理模块 沙盒管理 ? 启动管理
通用基础能力 Service
通用工具模块 Base
基础网络能力 埋点能力 ? 队列管理模块 数据存储模块
音频能力 ? 定位基础能力 线程管理模块 定时器 ⏰
www.volcengine.com
16. 分层框架
业务基础层
Business Utils
登陆 tt.login
业务基础能力
CPAPIs
用
户
账
户
模
块
定
位
业
务
模
块
?
引
擎
环
境
模
块
包
管
理
?
沙
盒
管
理
?
CPAPIs Custom Implementation
tt.login 用户账户模块 BDAccountsPlatform
授
权
管
理
模
块
加载基础
Loader / AppBase
M
E
T
A
服
务
OpenAPIs
启
动
管
理
启动
Schema Boot Meta Package
跳转链接 启动管理器 基础信息服务 包加载、下载管理
Base
引擎环境模块
www.volcengine.com
17. 框架组件化设计
接入层
Platform
应用层
Application
业务基础层
Business Utils
通用基础层
Utils
标准业务接入模板 分发入口 注入
小程序 / 小游戏依赖模板 跳转链接 (Schema) 定制能力
容器 Container
开放能力 OpenAPIs
小程序 小游戏 tt.getSystemInfo tt.pay
高性能渲染 自定义扩展 tt.getLocation tt.login
业务基础能力 CPAPIs
加载基础 Loader / AppBase
用户账户模块 定位业务模块 ? Meta 服务 包管理 ?
引擎环境模块 授权管理模块 沙盒管理 ? 启动管理
通用基础能力 Service
通用工具模块 Base
基础网络能力 埋点能力 ? 队列管理模块 数据存储模块
音频能力 ? 定位基础能力 线程管理模块 定时器 ⏰
www.volcengine.com
18. 分层框架
容器视图 / 运行环境
应用层
Application
容器
Container
小
程
序
小
游
戏
高
性
能
渲
染
系
统
信
息
支
付
能
力
JSRuntime
BDPAppRuntime BDPGameRuntime
Container Container Container
BDPAppController BDPGameController BDPContainerController
自
定
义
扩
展
开放能力
OpenAPIs
活
体
认
证
JSRuntime
图
片
选
择
开放能力
OpenAPIs OpenAPIs OpenAPIs OpenAPIs
tt.login tt.getSystemInfo tt.getLocation tt.showToast
OpenAPIs OpenAPIs OpenAPIs OpenAPIs
tt.showActionSheet tt.showPickerView tt.getLaunchOptionsSync tt.vibrateShort
www.volcengine.com
19. 框架组件化设计
接入层
Platform
应用层
Application
业务基础层
Business Utils
通用基础层
Utils
标准业务接入模板 分发入口 注入
小程序 / 小游戏依赖模板 跳转链接 (Schema) 定制能力
容器 Container
开放能力 OpenAPIs
小程序 小游戏 tt.getSystemInfo tt.pay
高性能渲染 自定义扩展 tt.getLocation tt.login
业务基础能力 CPAPIs
加载基础 Loader / AppBase
用户账户模块 定位业务模块 ? Meta 服务 包管理 ?
引擎环境模块 授权管理模块 沙盒管理 ? 启动管理
通用基础能力 Service
通用工具模块 Base
基础网络能力 埋点能力 ? 队列管理模块 数据存储模块
音频能力 ? 定位基础能力 线程管理模块 定时器 ⏰
www.volcengine.com
20. 分层框架
接入层
Platform
标准业务接入模板 分发入口 注入
小程序 / 小游戏依赖模板 跳转链接 (Schema) 定制能力
开放能力 OpenAPIs
容器 Container
应用层
Application
小
程
序
小
游
戏
高
性
能
渲
染
自
定
义
扩
展
用
户
账
户
模
块
定
位
模
块 支
付
模
块
? ?
活
体
认
证
授
管
理
权
模
块
M
E
T
A
基
础
网
络
能
力
日
志
能
力 音
频
能
力
? ?
支
付
能
力
自
定
义
扩
展
Custom Implementation
AWEPhotoBrowser
定
位
基
础
能
力
包
管
理
?
沙
盒
管
理
?
启
动
管
理
通用工具模块 Base
通用基础能力 Service
通用基础层
Utils
系
统
信
息
AWERouter
加载基础 Loader / AppBase
业务基础能力 CPAPI
业务基础层
Business Utils
路由模块
队
列
管
理
模
块
数
据
存
储
模
块
线
程
管
理
模
块
定
时
器
⏰
www.volcengine.com
21. 21
不同产品的差异化诉求
22. 小程序是如何同时服务于多个产品的?
接入「小程序」「小游戏」
同时支持能力定制化
接入「小游戏」
并移除掉定位能力
接入「微型小程序」
仅满足业务功能即可,减少包体积
www.volcengine.com
23. 小程序是如何同时服务于多个产品的?
接入层 Platform
接入「小程序」「小游戏」
同时支持能力定制化
• 使用接入「模板」,按需接入
• 关键能力定制
标准接入模板 入口分发 注入
小程序/小游戏标准依赖模板 统一 Schema 入口链
接的跳转注册 宿主定制能力注入
模版 模版
小
程
序 小
游
戏
OpenAPIs
tt.chooseImage
Custom Implementation
AWEPhotoBrowser
www.volcengine.com
24. 小程序是如何同时服务于多个产品的?
接入「小程序」「小游戏」
同时支持能力定制化
接入「小游戏」
并移除掉定位能力
接入「微型小程序」
仅满足业务功能即可,减少包体积
www.volcengine.com
25. 小程序是如何同时服务于多个产品的?
接入层 Platform
标准接入模板 入口分发 注入
小程序/小游戏标准依赖模板 统一 Schema 入口链
接的跳转注册 宿主定制能力注入
模版
接入「小游戏」
并移除掉定位能力
• 使用接入「模板」,按需接入
• 高度内聚的「模块」设计,模块可插拔,按需移除模块
小
游
戏
OpenAPIs
定位能力
业务基础能力 CPAPI
地理位置权限管理能力
通用基础能力 Service
定位基础能力
通用工具 Base 通用工具 Base
队列管理模块 数据存储模块
www.volcengine.com
26. 小程序是如何同时服务于多个产品的?
接入「小程序」「小游戏」
同时支持能力定制化
接入「小游戏」
并移除掉定位能力
接入「微型小程序」
仅满足业务功能即可,减少包体积
www.volcengine.com
27. 小程序是如何同时服务于多个产品的?
接入层 Platform
标准接入模板 入口分发 注入
小程序/小游戏标准依赖模板 统一 Schema 入口链
接的跳转注册 宿主定制能力注入
容器
接入「微型小程序」
仅满足业务功能即可,减少包体积
• 高度内聚的「模块」设计,「模块」可插拔
• 自由组合「模块」,按需接入
小
程
序
OpenAPIs OpenAPIs OpenAPIs
活体认证 定位能力 支付能力
业务基础能力 CPAPI
地理位置权限管理能力
通用基础 Service 通用基础 Service
日志能力 ? 定位基础能力
通用工具 Base 通用工具 Base
队列管理模块 数据存储模块
www.volcengine.com
28. 28
监控服务
29. 核心数据监控
• 小程序平均加载时长 1s
• 小程序加载成功率 95%
• 数据异常监控主动报警
www.volcengine.com
30. 稳定性监控
• 小程序崩溃率 0.242‰
• 小程序崩溃用户数 0.139‰
www.volcengine.com
31. 稳定性监控
• 崩溃监控主动报警
www.volcengine.com
32. 32
接入小程序 SDK
33. 小程序产品接入
1.宿主相关信息填写
2.技术依赖解析工具
3.接入功能自助接入文档 (包含示例工程)
4.依照「测试用例」按需测试
www.volcengine.com
34. 火山引擎应用开发套件 MARS,免费公测中
火山引擎应用开发套件 MARS,是由字节跳动技术经验的沉淀,经抖音、今日头条等多款 App 研发实践验证、诸多企业使
用的面向多端开发场景的应用研发工具,致力于通过先进的研发技术,帮助企业和用户降低研发成本、聚焦业务成功。
微信扫码关注公众号,点击底部菜单栏“MARS 产品”即可申请
免费试用,如有私部需求也可在公众号内随时与我们联系解决。
www.volcengine.com
35. 欢迎加入
35
35
扫码关注
“火山引擎开发者社区”公众号
www.volcengine.com
36. www.volcengine.com