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 等多种图片缓存框架或者网络请求框架等等 这个估计改动很大(看项目的封装和规范性我接触的项目都很乱)

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

Android中apk瘦身相关推荐

  1. Android:apk瘦身

    本文主要记录开发中apk瘦身用到的技术,apk中最占地方的是图片.so库.图片删除一定要慎重,尤其是反射调用的,编译没问题运行反而可能崩溃! 了解 APK 结构 APK 文件由一个 Zip 压缩文件组 ...

  2. 「Android」 APK瘦身探索

    本文来自尚妆Android团队青峰 发表于尚妆博客 APK瘦身探索 最近几周一直在研究如何为APK瘦身,折腾了很久,是时候写篇博客总结一下了,虽然已经准备了下周一要在客户端周会分享用的PPT:APK瘦 ...

  3. Android中app瘦身方式

    App瘦身的概念 App瘦身是指在不减少App功能的前提下,通过一些技巧将打包出来的apk体的体积尽可能减少.  这样做的好处有几个:加快用户下载速度,节省用户下载流量,提升用户下载体验.  如果不进 ...

  4. Android优化系列之apk瘦身

    概述 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好 ...

  5. Android性能优化之APK瘦身最全总结

    Android性能优化之APK瘦身最全总结 随着业务复杂度的逐渐增加,代码.资源也在不断的增加,此时你的APP大小也在增加.从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要 ...

  6. Android apk瘦身之使用TinyPng压缩图片

    1 前言 Android apk太大了怎么办,有的时候需要减小apk的体积,例如上传到服务器的时候有文件大小的限制.百度一下,发现大致有以下几种方法: 使用混淆,减少代码体积 删除不使用的资源 减少使 ...

  7. Android 性能优化(62)---存检测、卡顿优化、耗电优化、APK瘦身——详解篇

    Android 性能优化,内存检测.卡顿优化.耗电优化.APK瘦身--详解篇 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今 Android 9.0 代号P  都 ...

  8. Android性能优化之APK瘦身详解(瘦身73%)

    image 公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了.可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段. ...

  9. [Android 之美] 那些你不知道的APK 瘦身,让你的APK更小

    [Android 之美] APK 瘦身,减少APK的大小 让我们的apk文件尽可能更小,移除那些未使用的代码和资源文件.本章节介绍了如何做到让APK更小,性能更好,下载转化率会更高,以及如何指定在构建 ...

最新文章

  1. 【转】C/C++中的日期和时间
  2. Exchange server 2003迁移到2010之升级默认地址簿及地址策略
  3. 如何跳过无用的字符信息
  4. Codeforces Round #598 (Div. 3) F. Equalizing Two Strings 思维 + 逆序对
  5. 黑客(续) (压位高精+状压dp)
  6. 前端工业物联网开发(Electron + Typescript + Vue)
  7. centos6.5装mysql好难_centos 6.5装mysql5.7
  8. lisp提取长方形坐标_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...
  9. 常见英语人名及其音标和中文翻译
  10. UEFI——PCI/PCIe
  11. 最简单linux桌面环境,推荐:轻型简易的Linux桌面环境
  12. 2011互联网大会23日在京举行 微博带您对话CEO
  13. 力扣(LeetCode)904. 水果成篮(C语言)
  14. PMP证书真的烂大街了?
  15. LeetCode 每日一题 377. 组合总和 Ⅳ
  16. 嵌入式学习⑩——STM的PWM和DAC
  17. 复旦大学管理学院2018年考博(高级微观经济学+管理理论综合)真题
  18. 云知梦css学习笔记(2018年4月1日15:58:07)
  19. 浅谈网络推广方法的营销周期
  20. 如何采集阿里妈妈后台的淘客订单

热门文章

  1. linux下svn解决冲突
  2. FOC——3.电源防反接电路笔记
  3. shell脚本 cut工具
  4. 企业信用等级评价流程
  5. oracle数据库tns配置方法详解-转
  6. 分布式环境下的服务器时钟同步问题解决办法
  7. JS === 简易放大镜
  8. svg基础标签以及用法
  9. 什么工程项目管理软件好用?
  10. mysql创建数据表并添加数据的相关命令及操作(二)