从APK角度提升App性能【Apk瘦身加固】
2016-10-20 17:34
441 查看
APK的基本概念
在Android设备上,直接运行APK文件即可完成安装APK文件其实是zip格式,但后缀名被修改为apk,通过解压,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码
下图是解压之后的APK目录
META-INF\ (注:Jar文件中常可以看到);
res\ (注:存放资源文件的目录) ;
AndroidManifest.xml (注:程序全局配置文件) ;
classes.dex (注:Dalvik字节码);
resources.arsc (注:编译后的二进制资源文件)。
windows平台查看某一个文件的大小应该不是很困难的事情吧?
定义分工,优化APK是谁的责任?
首先得从APK的解压目录说起通常来说占据APK内存大小的前四名为 classes.dex>=res>assets>lib
直接由程序员产生的其实只有classes.dex文件,因为这都是Java代码,所以在这里某些程序员同仁可能要甩锅了,“APK安装包过大,明明就是UI,美工切图的问题!”
给的图片太占内存?宽高几百像素的Imageview,UI给了我2M的图片,尼玛,坑比!
图片适配给的太多?1280*720,1920*1080….整个res目录全是各种分辨率合适吗?
阿西巴,日语,韩语,英语,法语…?国际化素材打包这么多?关键还包含朝鲜语,什么鬼?
应用宝首发,小米首发,各种首发,需要高清大图,安装包满的塞不下啦!
其实不然,不论我们拿到怎样设计稿,切图,作为程序员,我们都应该优雅的解决:
对UI给的图片进行极致压缩
格式压缩,PNG转成WebP,JPEG,压缩工具-iSparta
由此可见WebP的体积减少最高可至80%!
尺寸压缩 压缩工具-tinypng,可以实现在无损压缩的情况下图片文件大小缩小到原来的30%-50%
图片仅使用一套,目前来说放在hdpi或者xhpdi目录下都可以
国际化,多渠道,针对不同情况下,由程序员打不同的APK包
方法1:打包过程中,清除没有被引用过的资源通过
shrinkResources true和
minifyEnabled true
android { ... buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
方法2:通过
resconfig属性指定的语言。未指定的语言的任何资源都被删除。
android { defaultConfig { ... resConfigs "en", "fr" } }
方法3:
APK Splits构建APK,支持按不同ABI,不同分辨率分割打包APK
android { ... splits { density { enable true exclude "ldpi", "tvdpi", "xxxhdpi" compatibleScreens 'small', 'normal', 'large', 'xlarge' } }
abi { enable true reset() include 'x86', 'armeabi-v7a', 'mips' universalApk true }
其次美工们也应当从根源上做起,切图时需要遵循“图片像素不浪费”原则,设计稿标注多大的像素,那么切的图就应当为多大,此外,保存图片格式时,可以适当降低图片质量,达到减小图片大小的问题。
APK加固
本人对加固技术所知甚浅,此处参考两篇资料作出总结对时下流行的Android应用加固技术分析
Android App安全加固行业分析报告
大多数移动安全厂商其实的加固方案是整体dex加密技术,定制版加固与免费版加固方案上没有区别,都是可执行文件的加密保护。
总结资料
图片压缩工具-iSparta图片压缩工具-tinypng
指定打包某一些资源文件至APK中,清除没有被引用的资源
Wep探寻之路
对时下流行的Android应用加固技术分析
Android App安全加固行业分析报告
相关文章推荐
- Android app性能优化和apk瘦身实践(更新:增加apk瘦身,2018-3-31)
- 从图片压缩的角度来思考提升APP的性能
- Android性能优化系列之apk瘦身
- 【调优】从吞吐量角度提升数据库整体性能
- APP深度性能测试&性能提升实践
- 六大技巧助APP软件开发提升性能
- Android性能优化系列之apk瘦身
- Apk瘦身、混淆、加固
- 使用图片和数据缓存技术提升App性能(第4章) 之一
- 从 apk 瘦身的角度来比较picasso、glide、volley、cube、fresco、UIL
- Android性能优化系列之apk瘦身
- Android 性能优化 (一)APK高效瘦身
- APP加固新方向——混淆和瘦身
- 开发者必读:13种方式帮助你提升App性能
- app性能优化(一)app瘦身
- apk瘦身的几个技巧 - Optimize your app
- Android性能优化(十)之App瘦身攻略
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
- 以用户需求为设计理念,优信二手车APP性能再提升
- 开发者程序猿必看:十大技巧快速提升原生App开发性能