QQ APP技术架构分析报告

QQ APP技术架构分析报告

目录


一、核心结论

QQ APP采用了混合技术架构,主要使用Hippy(腾讯自研跨端框架)作为跨端框架,同时结合了原生开发、插件化、小程序、游戏引擎等多种技术方案。

技术栈概览

  1. Hippy - 腾讯自研的跨端框架,主要的跨端技术
  2. Shadow插件化 - 腾讯Shadow插件化框架,支持动态加载
  3. 小程序 - 支持QQ小程序生态
  4. UE4游戏引擎 - 用于游戏和3D场景
  5. PAG动画 - 腾讯PAG动画框架,用于高性能动画渲染
  6. Lottie - 用于复杂动画效果
  7. 原生开发 - Kotlin/Java原生开发
  8. 多原生库集成 - 视频、音频、图片、网络、安全等

二、Hippy跨端框架分析

2.1 Hippy核心证据

Hippy资源文件(assets/hippy目录):

  • ssr/vendor_ssr.js - Hippy SSR(服务端渲染)相关

分析:QQ使用了腾讯自研的Hippy框架作为跨端解决方案。Hippy是腾讯开源的高性能跨端框架,支持React和Vue两种开发模式。

2.2 Hippy架构特点

核心优势
  • 高性能:使用原生渲染,性能接近原生
  • 跨平台:支持Android、iOS、Web
  • 开发效率:支持React/Vue语法,开发体验好
  • 动态更新:支持Bundle热更新
使用场景

从资源文件可以看出,QQ在以下场景使用Hippy:

  • 服务端渲染:SSR支持,提升首屏加载速度
  • 跨端页面:需要跨平台复用的页面

三、Shadow插件化框架

3.1 Shadow核心证据

原生库:

复制代码
libshadowhook.so                    - Shadow Hook库

Shadow资源(assets目录):

  • assets/shadow/ - Shadow插件化相关资源
  • assets/qshadow-plugins/ - Shadow插件目录

3.2 Shadow架构分析

Shadow是腾讯开源的Android插件化框架:

核心特点
  • 完全插件化:插件可以独立安装、更新
  • 宿主与插件隔离:插件运行在独立进程中
  • 支持四大组件:Activity、Service、BroadcastReceiver、ContentProvider
  • 热更新能力:支持插件热更新
使用场景

从目录结构可以看出,QQ使用Shadow实现:

  • 功能模块插件化:将功能模块以插件形式加载
  • 动态更新:支持插件独立更新,无需更新主应用
  • 游戏插件qshadow-plugins/yungame/ 游戏相关插件

四、小程序生态

4.1 小程序核心证据

小程序资源(assets/mini目录):

  • QCSC.js - QQ小程序核心脚本
  • QGameAndroid.js - QQ小游戏Android支持
  • QGameOpenDataContext.js - 小游戏开放数据域
  • QGameWorkerContext.js - 小游戏Worker线程
  • QLogic.js - 小程序逻辑层
  • QPageFrame.html - 小程序页面框架
  • QRemoteDebug.js - 远程调试支持
  • QVConsole.js - VConsole调试工具
  • QView.js - 小程序视图层
  • QWebview.js - WebView封装
  • QWorker.js - Worker线程支持

小程序原生库:

复制代码
libMiniAppCore.so                   - 小程序核心库
libwxaopenruntimejni.so            - 小程序运行时JNI

4.2 小程序架构分析

QQ小程序支持完整的微信小程序生态:

核心能力
  • 完整运行时:支持小程序完整生命周期
  • 小游戏支持:支持小游戏开发
  • 开放数据域:支持小游戏开放数据域
  • Worker线程:支持多线程开发
  • 远程调试:支持远程调试能力
使用场景
  • 业务小程序:部分业务功能以小程序形式实现
  • 第三方小程序:支持第三方开发者开发小程序
  • 小游戏:支持小游戏生态

五、UE4游戏引擎

5.1 UE4核心证据

UE4原生库:

复制代码
libUE4.so                           - UE4游戏引擎核心
libUE4Bundle-Splittables.so         - UE4 Bundle分割支持

UE4资源:

  • assets/UE4CommandLine.txt - UE4命令行配置

5.2 UE4架构分析

Unreal Engine 4是Epic Games开发的游戏引擎:

核心特点
  • 高性能3D渲染:强大的3D图形渲染能力
  • 跨平台:支持Android、iOS等平台
  • 完整游戏开发工具链:提供完整的游戏开发工具
使用场景

QQ在以下场景使用UE4:

  • 3D场景:3D虚拟场景展示
  • 游戏功能:游戏相关功能
  • AR/VR:增强现实和虚拟现实场景

六、PAG动画框架

6.1 PAG核心文件

动画资源(assets目录):

  • 大量.pag文件,包括:
    • adelie_avatar_generate_loading.pag - 头像生成加载动画
    • ae_editor_text_main.pag - 编辑器文本动画
    • ae_editor_lyric_default.pag - 编辑器歌词动画
    • first_stage.pag - 首阶段动画
    • tutorial_gesture_timelinestretch.pag - 教程手势动画
    • wspag/ - 视频相关PAG动画
    • wink/pag/ - 视频编辑相关PAG动画
    • video/pag/ - 视频相关PAG动画
    • pag/ - 各种业务场景PAG动画

6.2 PAG架构分析

**PAG(Portable Animated Graphics)**是腾讯开源的高性能动画框架:

核心特点
  • 高性能:使用原生渲染,性能优于Lottie
  • 文件小:动画文件体积小
  • 支持AE导出:可直接从After Effects导出
  • 跨平台:支持Android、iOS、Web等
使用场景

从文件命名可以看出,QQ在以下场景使用PAG:

  • 视频编辑:视频编辑器中的动画效果
  • 交互反馈:用户操作反馈动画
  • 加载动画:各种加载状态动画
  • 业务动画:直播、电商、社交等业务场景

七、Lottie动画

7.1 Lottie资源

Lottie原生库:

复制代码
libjlottie.so                       - Lottie核心库
librlottie.so                       - RLottie库
librlottie-image-loader.so          - RLottie图片加载器

Lottie动画资源(assets目录):

  • 大量.json文件,包括:
    • audio_play_to_stop.json - 音频播放动画
    • audio_ready_to_play.json - 音频准备动画
    • audio_record_to_stop.json - 录音动画
    • guild_*.json - 频道相关动画
    • lottie/ - Lottie动画目录
    • refresh_lottie/ - 刷新动画
    • 各种业务场景的Lottie动画

7.2 使用场景

Lottie主要用于:

  • 复杂动画:需要复杂交互的动画效果
  • 设计稿还原:直接从设计工具导出使用
  • 业务动画:直播、社交、电商等业务场景

八、原生库技术栈

8.1 视频处理

视频相关库:

复制代码
libPlayerCore.so                    - 播放器核心
libtvideodownloadproxy.so           - 视频下载代理
libtvideodownloadproxy_uniform.so   - 统一视频下载代理
libqav_video_effect.so              - 视频特效
libTcVpxDec.so                      - VPX视频解码器
libTcVpxEnc.so                      - VPX视频编码器
libtav_ffmpeg_cmd.so                - FFmpeg命令处理
libtav-resample.so                  - 音频重采样

分析:QQ使用了自研播放器和FFmpeg进行视频处理,支持多种视频格式和特效。

8.2 音频处理

音频相关库:

复制代码
libQQAudio3A.so                     - QQ音频3A处理(AEC/ANS/AGC)
libQQAudioInput.so                  - 音频输入
libQQAudioReceive.so                - 音频接收
libQQAudioSend.so                   - 音频发送
libGVoice.so                        - 游戏语音
libGCloudVoice.so                   - 游戏云语音
libaudiohelper.so                   - 音频辅助库
libnative_audio_record_v7a.so      - 原生音频录制
libvoicemessagedenoise.so          - 语音消息降噪
libwx-asr-vad.so                    - 语音识别VAD
libsonic.so                         - 音频处理库

音频效果库(Wwise音频引擎):

复制代码
libAkAudioInput.so                  - Wwise音频输入
libAkCompressor.so                  - 压缩器
libAkDelay.so                       - 延迟效果
libAkExpander.so                    - 扩展器
libAkFlanger.so                     - 镶边效果
libAkGain.so                        - 增益控制
libAkGuitarDistortion.so            - 吉他失真
libAkHarmonizer.so                  - 和声器
libAkMatrixReverb.so               - 矩阵混响
libAkMotion.so                      - 运动效果
libAkParametricEQ.so                - 参数均衡器
libAkPeakLimiter.so                 - 峰值限制器
libAkPitchShifter.so               - 音调变换
libAkRecorder.so                    - 录音器
libAkReflect.so                     - 反射效果
libAkRoomVerb.so                    - 房间混响
libAkSilenceGenerator.so           - 静音生成器
libAkSineTone.so                    - 正弦音调
libAkSoundSeedAir.so                - 空气音效
libAkSoundSeedImpact.so             - 冲击音效
libAkStereoDelay.so                 - 立体声延迟
libAkSynthOne.so                    - 合成器
libAkTimeStretch.so                 - 时间拉伸
libAkToneGen.so                     - 音调生成器
libAkTremolo.so                     - 颤音效果

其他音频库:

复制代码
libMasteringSuite.so                - 母带处理套件
libMcDSP.so                         - McDSP音频处理
libiZotope.so                       - iZotope音频处理
libAuro.so                          - Auro音频处理

分析:QQ使用了完整的音频处理体系,包括:

  • 3A处理:回声消除、噪声抑制、自动增益控制
  • Wwise音频引擎:专业的游戏音频引擎
  • 多种音频效果:压缩、混响、均衡等专业效果

8.3 图片处理

图片处理库:

复制代码
libimage_gif.so                     - GIF图片处理
libandroidndkgif.so                 - Android NDK GIF支持
libapng.so                          - APNG图片支持
libgiflibra.so                      - GIF库
libGIFEngine.so                     - GIF引擎
libzhitugif.so                      - 知兔GIF处理
libblur.so                          - 模糊效果
libsmart-blur.so                    - 智能模糊

分析:QQ支持多种图片格式,特别是GIF和APNG动图格式。

8.4 网络库

网络相关库:

复制代码
libLightQuic.so                     - 轻量级QUIC协议
libhttpdns.so                       - HTTP DNS
libxphttpclientex.so                - HTTP客户端扩展
libuploadnetwork_v1.3.so            - 上传网络库
libuv.so                            - libuv网络库
libuvjni.so                         - libuv JNI

分析:QQ使用了QUIC协议和HTTP DNS来提升网络性能。

8.5 安全与加密

安全相关库:

复制代码
libQSec.so                          - QQ安全库
libDBEncryptV2.so                   - 数据库加密V2
libDBFix.so                         - 数据库修复
libDecodeSo.so                      - 解码库
libMMANDKSignature.so               - MMANDK签名
libMSFKernel.so                     - MSF内核
libmsfbootV2.so                     - MSF启动V2
libckeygenerator.so                 - 密钥生成器
libwtecdh.so                        - ECDH加密

分析:QQ使用了多层安全防护,包括数据加密、签名验证等。

8.6 存储

存储相关库:

复制代码
libmmkv.so                          - MMKV高性能键值存储
libwcdb.so                          - WCDB数据库(微信开源)

分析:QQ使用了MMKV和WCDB两种存储方案:

  • MMKV:高性能键值存储
  • WCDB:关系型数据库

8.7 崩溃监控

崩溃监控库:

复制代码
libBugly_Native.so                  - 腾讯Bugly崩溃监控
libbugly_dumper.so                  - Bugly转储器
libbuglybacktrace.so                - Bugly堆栈回溯
libwechatbacktrace.so               - 微信堆栈回溯
libwechatcrash.so                   - 微信崩溃监控
libwechatxlog.so                    - 微信日志
libmatrix-hookcommon.so             - Matrix Hook通用
libmatrix-memoryhook.so             - Matrix内存Hook
libmatrix-pthreadhook.so            - Matrix线程Hook
libmatrix-traffic.so                - Matrix流量监控

分析:QQ使用了腾讯的Bugly和Matrix进行崩溃监控和性能分析。

8.8 其他重要库

地图引擎:

复制代码
libtxmapengine.so                   - 腾讯地图引擎
libtxmapvis.so                      - 腾讯地图可视化
libtencentloc.so                    - 腾讯定位服务

日志库:

复制代码
libmarsxlog.so                      - Mars XLog日志库
liblog.so                           - 日志库
liblogcathook.so                   - 日志捕获Hook
libwechatxlog.so                    - 微信日志

其他:

复制代码
libc++_shared.so                    - C++标准库
libstlport_shared.so                - STLPort标准库
libfreetypejni.so                   - FreeType字体渲染
libcodecsilk.so                     - SILK音频编解码
libcodecwrapperV2.so                - 编解码包装器V2
libgpro.so                          - GPro库
libfekit.so                         - FEKit库
libfg.so                            - FG库
libkernel.so                        - 内核库
libmodule_service.so                - 模块服务
libunitedconfig.so                  - 统一配置
libxplatform.so                    - 跨平台库
libzstd-jni-1.5.6-1.so              - Zstd压缩库
liblzmadecode.so                    - LZMA解码库
libjlz4.so                          - LZ4压缩库
libmbedtlsall.so                    - mbedTLS加密库
libcftutils_v1.3.1.so               - CFT工具库
libcpu_v1.1.so                      - CPU工具库
libcuckoo.so                        - Cuckoo哈希表
libdjinni_interface_core_public.so - Djinni接口核心
libdjinni_support_lib.so            - Djinni支持库
libtriton.so                        - Triton库
libsquarepants.so                   - SquarePants库
libwarbler.so                       - Warbler库
libwind.so                          - Wind库
libturingmfa.so                     - 图灵MFA
libturingxq.so                      - 图灵XQ
libtgpalite.so                      - TGP Lite
libBeaconDT.so                      - Beacon DT
libstartup.so                       - 启动库
libthreadsuspend.so                 - 线程挂起
libtrim_process_pie.so              - 进程裁剪
libunusedcodecheck.so               - 未使用代码检查
libtry-alloc-lib.so                 - 尝试分配库
libx5linker.so                      - X5链接器
libxweb_linker.so                   - XWeb链接器
libv8jni.so                         - V8 JNI
libtv8rt.so                         - TV8运行时
librtc_node_report.so               - RTC节点报告
libwechatns.so                      - 微信网络服务
libwechatcommon.so                  - 微信通用库
libweibosdkcore.so                  - 微博SDK核心
libzplan-android.so                 - ZPlan Android
libzplan_interface_dynamic.so       - ZPlan接口动态
libzplan_service.so                 - ZPlan服务

九、应用架构特点

9.1 多DEX架构

classes*.dex文件可以看出,QQ使用了Multidex

  • classes.dex - 主DEX(7.8KB,仅36行,可能是启动类)
  • classes2.dexclasses37.dex - 辅助DEX(共37个)
  • 总大小约350MB+

分析:应用代码量巨大,需要Multidex来突破单个DEX文件的方法数限制。QQ的DEX文件数量(38个)远超知乎(19个),说明代码量更大。

9.2 资源管理

资源文件统计:

  • r/ - 资源目录,包含大量XML、PNG、WebP等资源文件
  • assets/ - 丰富的资源文件,包括动画、配置、插件等
  • 资源文件经过混淆处理(文件名使用短名称)

分析:应用UI复杂,资源文件众多,且经过混淆处理以减小体积和保护资源。

9.3 插件化架构

从目录结构可以看出,QQ采用了插件化架构

  • Shadow插件化:使用Shadow框架实现插件化
  • 动态加载:支持插件动态加载和更新
  • 功能隔离:插件运行在独立进程中

9.4 多技术栈混合

QQ采用了多种技术栈:

  • Hippy:跨端页面
  • 小程序:小程序生态
  • 原生开发:核心功能
  • 插件化:功能模块
  • 游戏引擎:3D场景

十、第三方SDK集成

10.1 已识别的SDK

从配置文件和库文件可以看出,QQ集成了以下SDK:

腾讯内部:

  • Bugly(崩溃监控)
  • Matrix(性能监控)
  • WCDB(数据库)
  • Mars(网络库)
  • XLog(日志库)
  • 腾讯地图
  • 腾讯定位

其他:

  • MMKV(存储)
  • Wwise(音频引擎)
  • UE4(游戏引擎)

10.2 SDK配置

配置文件示例:

  • assets/grs_sdk_*.json - 阿里云GRS配置
  • assets/easygo.json - EasyGo配置(MagicWindow相关)
  • assets/configs/ - 各种配置文件

十一、技术架构总结

11.1 架构特点

  1. 混合架构:原生 + Hippy + 小程序 + 插件化 + 游戏引擎
  2. 插件化架构:使用Shadow实现功能模块插件化
  3. 多端支持:Hippy跨端 + 小程序生态
  4. 高性能动画:PAG + Lottie双动画方案
  5. 丰富的原生能力:视频、音频、图片、网络、安全等
  6. 完善的监控体系:Bugly + Matrix性能监控

11.2 技术选型分析

技术领域 选型 原因
跨端框架 Hippy 腾讯自研,性能优秀,支持React/Vue
插件化 Shadow 腾讯自研,完全插件化,支持热更新
小程序 QQ小程序 支持小程序生态,与微信小程序兼容
动画 PAG + Lottie 高性能 + 复杂动画
游戏引擎 UE4 强大的3D渲染能力
音频处理 Wwise + 自研 专业音频引擎 + 定制化处理
图片加载 自研 支持多种格式,特别是GIF/APNG
存储 MMKV + WCDB 高性能键值存储 + 关系型数据库
网络 QUIC + HTTP DNS 高性能网络协议
崩溃监控 Bugly + Matrix 完善的错误追踪和性能分析

11.3 架构优势

  1. 开发效率:Hippy跨端开发,小程序生态,插件化动态更新
  2. 性能优化:原生能力 + Hippy优化,性能平衡
  3. 动态更新:插件化 + 小程序 + Hippy Bundle支持热更新
  4. 用户体验:PAG动画提供流畅的交互体验
  5. 功能扩展:插件化架构支持功能模块独立开发和更新
  6. 生态支持:小程序生态支持第三方开发者

11.4 潜在挑战

  1. 包体积:多DEX、多原生库、多技术栈导致APK体积巨大
  2. 维护成本:多技术栈混合,维护成本非常高
  3. 性能平衡:原生、Hippy、小程序、插件的性能平衡需要精细调优
  4. 版本管理:多技术栈版本管理复杂
  5. 兼容性:多技术栈之间的兼容性问题

十二、总结

QQ APP采用了以Hippy为核心,结合插件化、小程序、游戏引擎的混合架构,结合了原生开发、PAG动画、WebView等多种技术。整体架构设计复杂,在开发效率、性能、用户体验、功能扩展性之间取得了良好的平衡。

核心优势:

  • Hippy跨端开发提升效率
  • Shadow插件化支持动态更新
  • 小程序生态支持第三方开发者
  • PAG动画提供流畅体验
  • 丰富的原生能力支撑
  • 完善的监控体系

改进方向:

  • 优化包体积(多DEX、多原生库)
  • 简化技术栈(减少技术栈数量)
  • 优化多技术栈管理(统一管理平台)
  • 提升性能(多技术栈性能优化)

分析基于QQ APP 9.1.33版本(APKPure)

相关推荐
qq_256247056 小时前
Rust 模块化单体架构:告别全局 Migrations,实现真正的模块自治
开发语言·架构·rust
CinzWS7 小时前
车规级高可靠性DMA控制器(G-DMA)架构设计--第一章 设计需求与规格定义 1.1 核心驱动力与应用场景
架构·dma
切糕师学AI7 小时前
ARM 架构中的数据内存屏障指令 DMB
arm开发·架构·指令·内存屏障
惟恋惜9 小时前
Jetpack Compose 多页面架构实战:从 Splash 到底部导航,每个 Tab 拥有独立 ViewModel
android·ui·架构·android jetpack
湘-枫叶情缘10 小时前
BIZBOK®指南入门教案:框架全景理解与知识地图构建
架构
云舟吖10 小时前
Open-AutoGLM 部署指南:本地大模型控制 Android 手机自动化
架构
踏浪无痕10 小时前
自定义 ClassLoader 动态加载:不重启就能加载新代码?
后端·面试·架构
踏浪无痕10 小时前
别重蹈我们的覆辙:脚本引擎选错的两年代价
后端·面试·架构
狂胤10 小时前
告别“CV工程师”:手把手教你设计一套 B 端低代码 DSL
架构