android APK瘦身

一、apk文件组成:

lib文件:
包含特定于处理器软件层的编译代码,该目录包含了每种平台额子目录,像armeabi,armeabi-v7a,arm64-v8a,x86,x86_64
res文件:
包含未编译到的资源 resources.arsc,主要有图片资源文件。
class.dex文件:
包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。主要为java代码
resource.arsc:
包含已编译的资源。该文件包含res/values/ 文件夹所有配置中的XML内容。打包工具提取此XML内容,将其编译为二进制格式,并将内容归档。此内容包括语言字符串和样式,以及直接包含在resources.arsc文件中的内容路径 ,例如布局文件和图像。

assets
包含应用可以使用AssetManager对象检索的应用资源。
AndroidManifest:
包含核心Android清单文件。该文件列出应用程序的名称,版本,访问权限和引用的库文件。该文件使用Android的二进制XML格式。

二、分文件处理

lib目录处理
在这里插入图片描述
1.可以看到存在三种CPU架构的lib库,arm64-v8a、armeabi、armeabi-v7a。
大多数情况下只用两种armeabi-v7a/ arm64-v8a,所以在 app目录下build.gradle 下修改 ndk配置,并且删除armeabi目录:

      ndk {
            abiFilters "armeabi-v7a", "arm64-v8a" 
        }

2.部分so文件可能用不到,也可以进行酌情删减

res目录处理
在这里插入图片描述

1.一般占大头的是png图,解决方法是让图片用webp格式代替
在这里插入图片描述

2.大图尽量使用jpg图片代替,并且让UI不要设计颜色复杂度过高的图片
3.能用shape文件绝不用UI设计的图片文件;
4.一些需要拉伸的不规则图片尽量使用.9图;
5.能用自定义控件的用自定义控件代替图片

assets文件处理
较大的文件可以不放在assets中,进行分离处理
resources.arsc文件处理
这个文件打不开,但知道这个文件里面是包含res/values/ 文件夹所有配置中的XML内容,包括colors.xml,ids.xml, string.xml, styles.xml等等资源文件;只需要去掉不需要使用的资源文件就可以减少它的体积
去除无用资源 gradle配置

buildTypes {
        release {
            //去除无用资源
            shrinkResources true
           /开启混淆
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

使用lint工具扫描资源
使用Lint去除无用的资源文件,操作步骤是Analyze -> Run Inspection by Name -> 输入框输入 Unused resources 就可以扫描工程找到未使用的资源了
在这里插入图片描述

在这里插入图片描述
classes.dex文件处理
dex文件是源码编译后的运行字节码文件
1.删除无用的import(项目单机右键,点击 Optimize Imports即可)
在这里插入图片描述
2.删除无用的代码
3.代码混淆处理(常规混淆配置即可)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值