Android中apk瘦身

1. 结构分析
首先上传一张瘦身前通过Analyze app分析出来的图片(打开方式:Android Studio下 ——> Build——> Analyze app):

APK包结构如下:

lib/:包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。大多数情况下我们可以只用一种armeabi-v7a,后面会讲到原因。
assets/:包含应用可以使用AssetManager对象检索的应用资源。
res/:包含未编译到的资源 resources.arsc,主要有图片资源文件。
META-INF/:包含CERT.SF和 CERT.RSA签名文件以及MANIFEST.MF 清单文件。
resources.arsc:包含已编译的资源。该文件包含res/values/ 文件夹所有配置中的XML内容。打包工具提取此XML内容,将其编译为二进制格式,并将内容归档。此内容包括语言字符串和样式,以及直接包含在resources.arsc文件中的内容路径 ,例如布局文件和图像。
classes.dex:包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。
AndroidManifest.xml:包含核心Android清单文件。该文件列出应用程序的名称,版本,访问权限和引用的库文件。该文件使用Android的二进制XML格式。
2.具体实操
1. 对lib目录下的文件进行瘦身处理
1. 修改lib配置:

参考资料
so文件的优化:通常我们在使用NDK开发的时候,我们经常会有如下这么一段代码:

ndk {
            //设置支持的so库架构
            abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64", "armeabi"
        }
修改后的配置  减少一些cpu的配置会减少apk大小很多 但是在部分机型上会出现bug GooglePlay上配置必须64位

ndk     {
            //设置支持的so库架构
            abiFilters "armeabi-v7a"
        }
2. 优化res,assets文件大小
1. 手动lint检查,手动删除无用资源

在Android Studio中打开“Analyze” 然后选择"Inspect Code...",范围选择整个项目,然后点击"OK"。

2. 使用图片压缩工具对图片进行压缩。

推荐用 https://zh.recompressor.com/  没有图片限制

https://tinypng.com/                            图片限制20张

3. 大部分图片使用占有小的来代替如webp

一般不太现实 因为毕竟项目成型了 新项目可以考虑下  前提是UI得会

4. 尽量不要在项目中使用帧动画

参考使用lottie-android。当然还得UI设计师会。

5. 使用gradle开启shrinkResources   开启混淆 移除无用资源

 buildTypes {
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //混淆
            minifyEnabled true
            // 移除无用的resource文件
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
4. 在项目中设置一套语言
删除翻译资源,只保留中英文  resConfigs "zh"
   defaultConfig {
        applicationId ""
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 22
        versionName "1.0.21"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        resConfigs "zh"
    }
5. 然后删除一下项目中无用的框架或者重复的框架
比如:fresco glide 等多种图片缓存框架或者网络请求框架等等 这个估计改动很大(看项目的封装和规范性我接触的项目都很乱)

基本下来项目就能压缩百分之五十这是我分享的有用的压缩方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值