Android Apk 瘦身 优化50%

Apk结构分析

我们可以通过Android Studio 直接分析Apk

  1. lib/: 包含特定于处理器软件层的编译代码,包含(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, 和mips)。大多数情况我们只用一种armeabi-v7a
  2. assets/: 包含应用可以使用AssetMananger对象检索的应用资源
  3. res/: 包含未编译到的资源 resources.arsc,主要有图片资源文件
  4. META-INF/: 包含CERT.SF和CERT.RSA签名文件,以及MANIFEST.MF清单文件
  5. resources.arsc: 包含已编译的资源
  6. classes.dex:包含以Dalvik/ART虚拟机可理解的DEX文件格式编译的类
  7. AndroidMainifest.xml:包含核心的Android清单文件

具体操作

1. 瘦身lib

修改前

ndk {
            //设置支持的so库架构
            abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64", "armeabi"
        }

修改后:

ndk {
            //设置支持的so库架构
            abiFilters "armeabi-v7a"
    }

接下来说明这么做的依据:
看上面图分析,armeabi-v7主要不支持ARMv5(1998年诞生)和ARMv6(2001年诞生).目前这两款处理器的手机设备基本不在我公司的适配范围(市场占比太少)。
而许多基于 x86 的设备也可运行 armeabi-v7a 和 armeabi NDK 二进制文件。对于这些设备,主要 ABI 将是 x86,辅助 ABI 是 armeabi-v7a。
最后总结一点:如果适配版本高于4.1版本,可以直接像我上面这样写,当然,如果armeabi-v7a不是设备主要ABI,那么会在性能上造成一定的影响。

2. 重新编译so文件,用更小的库代替

很多第三方我们导入进来只用到其中很小一部分功能,大部分功能都是我们用不上的。这时候我们找到源代码,将我们需要的那部分代码提取出来,重新编译成新的so文件,再导入到我们项目中。

3. 优化res,assets文件大小

  1. 手动lint检查,手动删除无用资源
  2. 使用tinypng等图片压缩工具对图片进行压缩
  3. 大部分图片使用Webp格式代替
  4. 尽量不要在项目中使用帧动画
  5. 使用gradle开启shrinkResources,移除无用资源文件
  1. 减少classes.dex大小

参考https://www.jianshu.com/p/fee82949ff84

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值