您的位置:首页 > 其它

APK大小的瘦身的总结:

2017-04-05 09:56 176 查看
首先是看了博客:http://blog.csdn.net/sw950729/article/details/64919051 

时,觉得大神我就是马云飞写的很有道理,所有自己就自己写了一遍,长话短说: 

在实际开发中,特别是多人接手迭代开发的项目中,随着时间的推移,项目会越来越大。所以让项目大小变小是可以如下操作:

1,在gradle使用minifyEnabled进行Proguard混淆的配置,可大大减小APP大小,如以下代码:
buildTypes {
release {
//开启混淆(as自带默认配置)
minifyEnabled ture
//去出无用的资源文件
shrinkResources true
//移除无用的Resources的资源文件
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11

2,删除无用资源,主要是xml文件,操作–点击Analyze——>Run Inspection by Name–然后输入unused Resources即可显示出未使用的资源文件,其操作步骤为: 







3,图片瘦身值熊猫大法–使用tinypng压缩图片,官方网站:https://tinypng.com 

PNG是有用的,因为它是唯一广泛支持的格式,可以存储部分透明的图像。格式使用压缩,但是文件仍然可能很大。使用TinyPNG缩小您的应用程序和网站的图像。它将使用更少的带宽和更快的加载。图片就不截取出来了,大家可以直接去官网查看了解。

4,通过重构Refactor来删除无用的资源(通过id找到),具体操作如下 

通过Remove Unused Resources来删除无用的资源 




 

其中Refactor表示直接重构,Preview表示预览的意思,建议大家先使用预览的方式,因为代码中引用方式不同,所以存在代码中使用了某个资源,但是依然被当成没有引用的情况,例如通过使用getIdentifier、Uri等方式。

5,针对不同cpu的so库进行打包,目前仍就在试验当中 

armeabi、armeabi-v7a(32的cpu),armeabi-v8a(64位的cpu)和x86, 

在其安装设备中,是默认以armeabi为选项,同时需要指出:打包出的x86的so,总会比armeabi平台的体积更小,但是却有性能的损耗。

如果项目只包含了 armeabi,那么在所有Android设备都可以运行; 

如果项目只包含了 armeabi-v7a,除armeabi架构的设备外都可以运行; 

如果项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是无法运行的; 

如果同时包含了 armeabi, armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,同时也会导致包变大。 

所以其操作为: 

5.1为了减小apk体积,只保留armeabi和armeabi-v7a两个文件夹,并保证这两个文件夹中so数量一致。 

2,对只提供aremabi版本的第三方so,原样复制一份到armeabi-v7a文件夹 

以上!



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: