锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
Apk精简优化详细教程【适合小白】

作者: 佚名  日期:2023-07-21 14:41:55   来源: 本站整理

在精简apk之前,首先要了解一下它的结构。


1.结构分析
APK包结构如下:

lib/
so库存放位置。
so库文件分为不同的CPU架构,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。大多数情况下我们可以只用一种armeabi-v7a,后面会讲到原因。

res/
资源文件夹,包含着图片、布局、菜单等文件,resources.arsc 中索引的文件均存放在该目录中(进行过资源混淆的除外)。

assets/
副资源文件夹。

META-INF/
包含CERT.SF和 CERT.RSA签名文件以及MANIFEST.MF 清单文件。

resources.arsc
资源配置文件,包含着字符串、主题、图片文件索引、布局文件索引等信息

classes.dex
包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。

AndroidManifest.xml
应用清单文件,版本号、版本名称、权限、应用名称、应用图标、活动、服务、广播等配置信息,均在这个文件中。该文件使用Android的二进制XML格式。


在这些文件中,除了META-INF/其它都是本文的精简对象

下面正式开始


1. 对lib目录下的文件进行瘦身处理

如果我直接告诉你只留下 armeabiv-v7a 文件夹就行是很不负责任的

如果你感兴趣,可以往下看

参考一下
armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它。
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。  

armeabi-v7主要不支持ARMv5(1998年诞生)和ARMv6(2001年诞生).目前这两款处理器的手机设备占比太少。

而许多基于 x86 的设备也可运行 armeabi-v7a 和 armeabi NDK 二进制文件。对于这些设备,主要 ABI 将是 x86,辅助 ABI 是 armeabi-v7a。

最后总结一点:如果适配版本高于4.1版本,可以只留下armeabiv-v7a,当然,如果armeabi-v7a不是设备主要ABI,那么会在性能上造成一定的影响。

so,,,,只留 armeabiv-v7a,,没错的undefined

(至于能省下多大空间,因应用而定)


另,,,如果有termux

    • uname -m
[color=rgb(51, 102, 153) !important]复制代码
可以查看你手机的cpu框架类型

当然还有进阶玩法--精简so文件,,只保留有用的核心代码,,但是,我不会undefined





2. 精简res/asstes


①删除asstes里的广告插件

主要有bdx开头的压缩包(百度)

gdt_开头的文件夹(腾讯)


②使用图片压缩工具对图片进行压缩。
(注:在压缩前要先看一下,不能预览的不要动)
例:
使用tinypng有损压缩
TinyPNG工具只支持上传PNG图片到官网上压缩,然后下载保存,在保持alpha通道的情况下对PNG的压缩可以达到1/3之内,而且用肉眼基本上分辨不出压缩的损失.

Tinypng的官方网站:http://tinypng.com/

注意:图片在打包时已经进行过无损压缩了,,故进行无损压缩是没有任何效果的。

③使用音频压缩工具对音频进行压缩。
(注:在压缩前要先看一下,不能播放的不要动)


④还可以删除abc_开头的图片文件,,
(这种一般都是自动生成的,开发者也不会调用)

  • abc_*.png
[color=rgb(51, 102, 153) !important]复制代码

正则搜索删除。

另:如果有能力,可以尝试把非透明 png 格式大图片转换为 jpg 格式,效果显著!

等等。。



3. 减小classes.dex大小

脱壳的就删无用类,,比如某数字删stub和jg

(mt新版可以一键去除调试信息,下面留作纪念)
 
(感谢@快乐小牛的提醒~来自545楼)
,,,,,,,,,,,,,,,,,,,,,
删掉dex里的.line x和.prologue也是个不错的方法,听说proguard工具可以一键,,但我不会

留下我的方法
①全dex代码搜
  • .prologue
[color=rgb(51, 102, 153) !important]复制代码
,全部替换即可(替换什么都不要填,强迫症可以填个空格)

②然后就是.line ,这个比较麻烦,因为有一到几千,,所以用正则匹配

  • \.line .+
[color=rgb(51, 102, 153) !important]复制代码

全dex搜索代码,,记得勾正则

虽然意义不大,但也有一定的效果,,而且可以增加dex对比的难度

4月1日补充:有人反应不能保存 (报错) 的问题,猜测是工作量太大导致mt编译出错,,关闭弹窗,然后再保存一遍就好啦。(详见43页)

如果还是不能解决,就别搞了。。编译的太多,手机带不动。。。  强迫症可以一个dex一个dex删
,,,,,,,,,,,,,,,,,,,

高级一点的就是剥离广告sdk,由于我不会,就不多说了。undefined

还有就是用工具,比如proguard,,自行百度

4. 精简 resources.arsc

我有点懒,不多说了,
官方文档有详细教程
路径:逆向功能 - 简单实战 - 汉化应用 - 精简语言包
另附(特别感谢@小狗巧巧):
[答疑解惑]为什么arsc越精简越大?

5.精简AndroidManifest.xml

这个我真的不会说,删掉无用activity 广播  service啥的就可。

用activity 举个例子。


  • <activity开头............xxxx........../>或者</activity>结尾
[color=rgb(51, 102, 153) !important]复制代码


这个是通用的,,建议去设置里开启 显示空白符,一般都是删八个点开头,八个点结束的一段。

常见的广告关键词有

  •  
  • qq.e(腾讯)
  • ads.(通用)
  • .ad.(大部分是应用内置)
  • .mobad.(百度)
  • .mobads.(百度)
  • .bytedance.(穿山甲,今日头条旗下)
  • .ss.(穿山甲,和上一个在一块)
  • (如果软件有其它功能和今日头条合作)
  • (删 错 会导致闪退)
  • (建议备份后再删除测试)
  •  
  • .bytedance.sdk.openadsdk.
  • (已确定是穿山甲广告)
  •  
  • sdk(带有huawei,xiaomi,meizu,vivo , push等 字样的删)
  •  
  • 还有 taobao, liulishuo, weibo 这些等等,自行判断
  •  
  •  
  • push.(通知推送)
  •  
[color=rgb(51, 102, 153) !important]复制代码

注:push请根据实际情况删除,,一般破解软件通知推送什么的根本不需要。

(4月26号补充:对不起诸位,我没有说清楚,,把自己的习惯带了进去,其实SDK有讲究的

,比如weibo的sdk删了会导致无法用微博登陆和分享,删淘宝可能会导致无法调用淘宝,

删带有手机型号的可能会导致无法使用手机运营商相关的服务,比如无法使用通知推送,无法调用应用商店更新,等等

再比如删alipay可能导致无法调用支付宝支付,,这些请自行判断)

(因为我平时是不在乎的,通知推送什么的,没有才好。微博本人也不用。。所以没有注明,抱歉,现在补上)


再次声明
本文大部分节选自CSDN的这篇
https://blog.csdn.net/AndroidAlvin/article/details/103159561

及mt官方文档

还有其它各种文档参考及个人经验,,

。。。THE END。。。


@MiBStudio 来看看啊undefined
(现在叫小狗巧巧undefined)


补几张图,顺序乱了,凑合看吧undefined

补充:关于为什么不能预览/播放的文件不要压缩,

举个例子,吃鸡游戏的安装包里有一个图片文件,1g多的地图,当然不能压缩。

人脸识别的配置文件就是mp3格式,也不可压缩

总结:只能压缩可以查看的文件


 
 
 
 
 



热门文章
  • 一个懒人的破解方式
  • Apk精简优化详细教程【适合小白】
  • 显卡PCIE4.0和3.0区别是什么,显卡性...
  • 笔记本摔后黑屏挽救实录!
  • 笔记本的工作原理及维修
  • 笔记本液晶屏常见问题集锦
  • 如何保护笔记本屏幕?
  • 笔记本开机出现perating system no...
  • 笔记本加内存条后可用内存没增加的...
  • 怎么关闭爱奇艺HCDN功能?解决方法...
  • 喷墨打印机清零方法图文教程
  • Mac系统怎么共享windows打印机/本地...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等