络腮胡菲菲 发表于 2024-10-19 19:36:55

【HarmonyOS NEXT】从泄露的QQ.hap中分析QQ利用了哪些技能,为什么要用?

1. 背景

2024年10月15日晚上各大微信群和QQ群都在疯传QQ.hap ,最为火热的截图是,各种做QQbot 机器人的人兴奋的不得老,缘故原由是:QQ.hap 解包后可以看到QQ的消息布局体利用的是protobuf,protobufdu对应的im_msg_body.proto 中形貌了各种微信消息的类型和解释。
https://img-blog.csdnimg.cn/img_convert/4dd6af538beff2dbbac8ef0e0fcef09b.png
https://img-blog.csdnimg.cn/img_convert/6dda7d822b3d1e8ab551790bdd000698.png
2. 分析QQ利用了哪些技能,为什么用?

笔者在拿到QQ.hap后,发现鸿蒙版的QQ其实利用了许多有意思的技能
2.1 protobuf

Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据形貌语言,是一种轻巧高效的布局化数据存储格式,可以用于布局化数据串行化,或者说序列化 。它很得当做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化布局数据格式。
https://img-blog.csdnimg.cn/img_convert/dc05d4b87f26717edaba8044bc0534c3.png
2.2 protobuf 优点

序列化后体积相比Json和XML很小,序列化反序列化速率很快,总之就是吊打JSON,在鸿蒙中可利用@ohos/protobufjs 库利用。
protobufjs利用文档:https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fprotobufjs
2.2 webview 调试脚本

众所周知,鸿蒙中想要利用Devtools工具调试前端Webview 比力麻烦,QQ编写了一个快捷的sh脚本,可用来调试Webbview
https://img-blog.csdnimg.cn/img_convert/a803a1a90721c0a9c392b0f93dfad81f.png
https://img-blog.csdnimg.cn/img_convert/08e20a7f8e97c3c46057baec4d38cbdd.png
2.3 应用启动框架AppStartup

AppStartup是鸿蒙官方出的应用启动框架,雷同Android中的JetPack App Startup,重要办理APP启动时初始化多个任务用的,可以支持任务的异步启动,加快应用启动速率。同时,通过在一个配置文件中同一设置多个启动任务的执行顺序以及依赖关系,让执行启动任务的代码变得更加简洁清楚、轻易维护。
官方利用文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-startup-V5
https://img-blog.csdnimg.cn/img_convert/1190ef1d5617a8029abd25236ad2492e.png
https://img-blog.csdnimg.cn/img_convert/cfc26948e32612e4aecf50af1040b536.png
2.4 APNG

APNG是Mozilla公司出的,动态可移植网络图形(英语:Animated Portable Network Graphics,缩写APNG)是一种继承自便携式网络图形(PNG)的文件格式,它答应像GIF格式一样播放动态图片,而且拥有GIF不支持的24位图像和8位透明性。 它还保留了与非动画PNG文件的向后兼容性。
https://img-blog.csdnimg.cn/img_convert/6ad109e25440dd18ac303ddec1db444e.png
鸿蒙中利用APNG文档:https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fapng
2.5 Xlog 日志框架

libqlog_kit.so,Xlog mars 中的一个子组件,是mars 是微信官方的终端基础组件,是一个利用 C++ 编写的业务性无关,平台性无关的基础组件。
https://img-blog.csdnimg.cn/img_convert/499aa79a6da00a0617229e7c7439862f.png
Xlog 优点

xlog相比其它日志模块,有如下优点:


[*]高性能高压缩率
[*]不丢失任何一行日志
[*]避免体系卡顿
[*]避免CPU波峰
[*]支持数据加密
2.6 lottie-动画库

lottie是一个适用于OpenHarmony的动画库,它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画,并在移动设备上进行本地渲染。
鸿蒙中利用lottie文档:https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Flottie
https://img-blog.csdnimg.cn/img_convert/b59f405c36c71fd5e090ec4b96627e6b.png
https://img-blog.csdnimg.cn/img_convert/ecda4a22565de330ba2c79b8c6dd3db4.png
lottie 优点



[*]支持跨平台,开发成本较低,一套Lottie动画可以在Android/IOS/Web多端利用。
[*]性能好,端上除了解析json,基本没有其他耗性能的操纵;而且相比于需要存储较多图片的帧动画,Lottie可以节流比力多的内存空间。
[*]可以从服务端配置URL实现,不需要APP发版就可以实现更新。
2.7 Compose Multiplatform -跨端UI框架

Compose Multiplatform 是基于 Kotlin 和 Jetpack Compose 构建的跨平台开发框架,旨在简化多平台应用程序的开发流程。开发者可以利用雷同的代码库来构建适用于不同平台的用户界面,并充实利用 Kotlin 语言的表达本领和可靠性。这意味着开发者可以通过 Compose Multiplatform 编写一次代码,并将其摆设到 iOS、Android、桌面和 Web 等多个平台上,从而降低开发成本、提高服从和加快上线速率。
其它基于Kotlin Multiplatform的鸿蒙跨平台开发实践:https://juejin.cn/post/7404858270513152000
个人猜测部分页面利用了KMP实现,雷同腾讯视频的方案,当然也不排除,只是利用可KMP写业务逻辑
https://img-blog.csdnimg.cn/img_convert/6365e400cd1e54b3a9ae6d769c3daae2.png
https://img-blog.csdnimg.cn/img_convert/c53471282fc8a4328a4b2626ba5dfe34.png
https://img-blog.csdnimg.cn/img_convert/f087d316b205e1b614e81f2f6fb8c714.png
https://img-blog.csdnimg.cn/img_convert/1510e575d778d8d3888011c973f64d7d.png
3. 总结

C++ 才是王道

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【HarmonyOS NEXT】从泄露的QQ.hap中分析QQ利用了哪些技能,为什么要用?