准备
手机可以使用 MT 管理器
电脑可以使用 ApkTool:
APK 包结构
在精简 apk 之前,首先要了解一下它的结构。
【assets】
这个文件夹主要放软件中的一些资源,比如图片,字体,一些其他的东西等,美化时可能会动它。【lib】
这个文件夹中放了软件运行所依赖的 so 库和一些其他的库。so 库文件分为不同的 CPU 架构,像 armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,mips。【META-INF】
签名数据文件夹。我们在修改 apk 之后,要对 apk 进行重新签名才能安装。【res】
这就是精简 apk 的重点修改地方了。软件的布局信息几乎都在里面,包括一些软件的贴图、图标等【AndroidManifest.xml】
这个文件放置了软件的主要信息,其中有包名,版本,Activity,权限等等。该文件使用 Android 的二进制 XML 格式。【classes.dex(多个)】
这个就是软件的代码,编译之后我们只能以 Smali 的形式进行编辑。当然,用 t 可以将它转化成不完整的 Java 代码供我们参考。【resourses.arsc】
这里面是一些二进制的资源引用,通过它可以查资源的十六进制的引用值,方便修改 DEX。
精简 lib
armeabi-v7a、arm64-v8a、armeabi、x86、x86_64 有什么区别?以下是 ChatGPT 给出的内容:
- armeabi-v7a:基于 ARMv7 指令集的 CPU 架构,适用于大多数现代的 ARM 处理器。
- arm64-v8a:基于 ARMv8 指令集的 64 位 CPU 架构,适用于支持 64 位指令集的 ARM 处理器。
- armeabi:基于 ARMv5 指令集的 CPU 架构,适用于一些旧的 ARM 处理器。
- x86:基于 x86 指令集的 CPU 架构,适用于支持 x86 架构的处理器,比如 Intel 和 AMD 的处理器。
- x86_64:基于 x86-64 指令集的 64 位 CPU 架构,适用于支持 64 位指令集的 x86 处理器。
现在大部分手机都支持 arm64-v8a 吧,自己看着留。
精简 res
asstes
删除广告插件
主要有 bdx 开头的压缩包(百度)和 gdt_ 开头的文件夹(腾讯)压缩图片、音频
在压缩前要先看一下,不能预览的不要动删除
abc\_
开头的图片文件(这种一般都是自动生成的,开发者也不会调用)
精简 classes.dex
resources.acrs
剥离广告 sdk,用 proguard 工具啥的太高级了,还不会。听说有时候 arsc 越精简越大😅
精简 AndroidManifest.xml
删掉无用 activity service permission 啥的。
常见的广告关键词:
- qq.e(腾讯)
- ads.(通用)
- .ad.(大部分是应用内置)
- .mobad.(百度)
- .mobads.(百度)
- .bytedance.sdk.openadsdk.(穿山甲)
- sdk(带有 huawei,xiaomi,meizu,vivo,push 等字样的)
sdk 要自行判断,比如微博的 sdk 删了会导致无法用微博登陆和分享,删淘宝可能会导致无法调用淘宝,删 alipay 可能导致无法调用支付宝支付,删带有手机型号的可能会导致无法使用手机运营商相关的服务等等
构建修改好的 apk
运行 apktool b 文件夹 -o 新安装包文件名.apk
即可,注意,还要签名才能安装。