
一、事情的开始
24年我使用we的时候,当时我特别喜欢一键三连娘的壁纸,手机的效果很好,唯一的缺点就是没有声音
我尝试寻找没声音的原因
我当时就想到了,如果是真的不支持,录屏也不会有声音
我尝试录屏,发现是有声音的,这就引发的后面的故事安卓版壁纸引擎是真的不支持声音?
当时我就尝试过修改本体来实现功能,但是当时的ai编程还不是那么发展,我印象里就是仅局限于自动补全
当时我尝试用gemin改包,但是当时还不懂安卓逆向,改了包也打不开
二、真正实践
26年7月,我开始回味我以前的视频,无意间发现了这个
我当时正好没事可做,我开始完整之前的大饼
2.分析apk
we手机端的apk很复杂但很有逻辑(没有混淆等),虽然整个apk全是效果文件
真正的代码存在于两个classes中
解包结构如图(几乎全删了):
wea
├─assets
│ └─scripts # 非资源的脚本目录,可能包含应用自定义 JS 逻辑
├─lib # 原生动态库(arm64-v8a/armeabi-v7a),可能含自定义实现
└─smali
└─com
└─io
└─wallpaperengine # 应用核心自定义代码(包名 com.io.wallpaperengine)
手机支持两种格式的壁纸(视频,场景),固然有两套逻辑
I.视频类型壁纸
视频类型的壁纸核心逻辑存在于smali\io\wallpaperengine\weutil\SupportVideoPlayer.smali400-402和smali/io/wallpaperengine/weviews/VideoWallpaperViewVideoDrawable.smali225-229中
原因是因为声音被硬编码为0
这一部分是最简单的,ai1分钟就改完了
II.场景类型壁纸
我先分析了java层,发现根本就没有场景壁纸的luio