首先是看了博客:http://blog.youkuaiyun.com/sw950729/article/details/64919051
时,觉得大神我就是马云飞写的很有道理,所有自己就自己写了一遍,长话短说:
在实际开发中,特别是多人接手迭代开发的项目中,随着时间的推移,项目会越来越大。所以让项目大小变小是可以如下操作:
1,在gradle使用minifyEnabled进行Proguard混淆的配置,可大大减小APP大小,如以下代码:
- 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文件夹
以上!
-
顶