apk瘦身

作者: 残非 | 来源:发表于2021-01-26 18:00 被阅读0次

结构分析

查看apk包的占用大小 :

打开方式:Android Studio下 ——> Build——> Analyze app)

APK包结构如下:

1. lib/:包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。大多数情况下我们可以只用一种armeabi-v7a,后面会讲到原因。

2. assets/:包含应用可以使用AssetManager对象检索的应用资源。

3. res/:包含未编译到的资源 resources.arsc,主要有图片资源文件。 (lint)

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

5. resources.arsc:包含已编译的资源。该文件包含res/values/ 文件夹所有配置中的XML内容。打包工具提取此XML内容,将其编译为二进制格式,并将内容归档。此内容包括语言字符串和样式,以及直接包含在resources.arsc文件中的内容路径 ,例如布局文件和图像。

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

7. AndroidManifest.xml:包含核心Android清单文件。该文件列出应用程序的名称,版本,访问权限和引用的库文件。该文件使用Android的二进制XML格式。

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

1. 修改lib配置:

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

  ndk {

        *//设置支持的so库架构*

  abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64", "armeabi"

    }
image.png

看上面图分析,armeabi-v7主要不支持ARMv5(1998年诞生)和ARMv6(2001年诞生).目前这两款处理器的手机设备基本不在我公司的适配范围(市场占比太少)。

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

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

** 优化res,assets文件大小**

1. 手动lint检查,手动删除无用资源

在Android Studio中打开“Analyze” 然后选择”Run inspection by name”,范围选择整个项目,然后点击”OK”。配置如下:

2. 使用tinypng(https://tinypng.com/)等图片压缩工具对图片进行压缩。

[https://tinypng.com/]
打开网址,将大图片导入到tinypng,替换之前的图片资源。

3. 将图片替换为Webp格式。

https://blog.csdn.net/lmj623565791/article/details/53240600

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

5. 使用gradle开启shrinkResources

  buildTypes {

    release {

        //混淆

        minifyEnabled true

        // 移除无用的resource文件

        shrinkResources true

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        signingConfig signingConfigs.release

    }

}

减少chasses.dex大小

classes.dex中包含了所有的java代码,当打包时,gradle会将所有模板力的.class文件转换成classes.dex文件,当然,如果方法数超过64K(方法树爆棚,即为方法超过65535),将要新增其他文件进行存储。可以通过multidexing分多个文件

可以通过下面几个方法来实现减少代码量 :

1. 尽量减少第三方库的引用,这个在上面我们已经做过优化了。

2. 避免使用枚举,使用静态常量替代枚举。https://blog.csdn.net/anhenzhufeng/article/details/80179832

3. 如果你的dex文件太大,检查是否引入了重复功能的第三方库

相关文章

  • APK瘦身 减小APP体积

    APK dex瘦身 APK res瘦身 APK减小语言包 APK 重新打包 PNG转JPG tiny处理png w...

  • Drawable 着色的后向兼容方案

    Drawable 着色的后向兼容方案(APK瘦身实践APK瘦身实践)[http://www.cnblogs.com...

  • Android性能优化

    Apk瘦身实用总结 Apk瘦身 Apk的大小对于用户是否选择下载应用起着至关重要的影响下面是对于减小Apk大小的一...

  • Android性能优化:实战讲解包体积优化(上)

    一、瘦身优化及 Apk 分析方案介绍 1、瘦身优势 我们首先来介绍下,为什么我们需要做 APK 的瘦身优化? AP...

  • app性能优化

    Android冷启动时间优化 Android开发——避免内存泄露 APK瘦身实践 APK瘦身记,如何实现高达53%...

  • apk瘦身

    Android性能优化之APK瘦身详解(瘦身73%) - 简书

  • android apk瘦身

    apk瘦身会带来哪些好处,本文就不赘述了,会依照下面的目录来对apk瘦身进行总结 目录 apk都有啥? 从资源下手...

  • Android apk瘦身实践

    写在前面 最近刚做了一波apk瘦身优化,瘦身后apk大小降低了19%左右。打铁要趁热,赶紧记录一下先。 APK A...

  • ipa和apk简易瘦身

    Material Design风格apk 瘦身ipa 瘦身 一、起因 新版本发布后发现安装包apk和ipa各增加了...

  • 【转】APK瘦身实践

    本文转自:Apk瘦身实践作者:杰风居 转载序:Android开发中,apk瘦身还是很有必要,尤其现在的APP动辄十...

网友评论

      本文标题:apk瘦身

      本文链接:https://www.haomeiwen.com/subject/tpfnzktx.html