Android apk 瘦身
来源:互联网 发布:知乎帖子怎么删除 编辑:程序博客网 时间:2024/05/17 22:21
Android apk 瘦身
开发过程中apk不可避免的会越来越臃肿,在升级更新时会消耗越多的流量,占用用户更多的存储空间,影响产品的转化率,所以很有必要对apk进行瘦身。网上有很多关于apk瘦身的优秀文章,这里只是简单做个记录。
使用Android studio分析apk大小
点击Build–>Analyze APK,选择要分析的apk文件,可以看到apk中不同资源所占比例大小。接下来就可以针对性的对apk进行瘦身了
APK瘦身
去除一些第三方库
由于项目中用到百度导航,融云等第三方服务,导入这些资源后,发现apk变的很大,出于减少apk大小的目的,只保留armeabi一个目录。这里如果只保留一个目录,注意依赖的module中的对应目录也要去除。查找并清除无用资源
使用Android studio自带的lint工具查找无用资源,有以下两种方式:
a. Analyze–>Inspecting Code,选择是对整个工程查找,还是对module查找。b. Analyze–>Run Inspection by Name,搜索Unused resouces
对于Android Lint分析出来的结果,确认无用后,直接删除即可。在删除图片时,运行时出现报错,发现是在无用的布局文件中用到,删除无用布局文件后正常。
使用tinyPng对图片进行压缩处理
tinyPng官网地址:https://tinypng.com/每个apk中都会用到很多图片,图片往往在apk包中占有很大的空间,对图片的压缩处理变的很必要了。tinyPng支持对png/jpg/.9图片的压缩,在图片不失真的情况下可以多次压缩。
可以看到压缩比例还是挺大的,而且和原图相比看不出什么区别。
使用WEBP,SVG图片资源格式
WebP是Google在2010年发布的一种新型图片格式,支持无损和有损压缩。在无损压缩方面,同质量的WebP图片比PNG的体积小26%,而在有损压缩方面,同质量的WebP图片比JPEG小25-34%。WebP在不降低图片质量的同时,减少了约三分之一的体积。这里提供一个在线转换webp工具:http://zhitu.isux.us/
对代码进行混淆
在app下的build.gradle文件中添加如下代码:
buildTypes { release { minifyEnabled true // 混淆文件的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
在proguard-rules.pro文件中编写自定义混淆代码:
#-----------------混淆配置设定-------------------------------------------------------------------------optimizationpasses 5 #指定代码压缩级别-dontusemixedcaseclassnames #混淆时不会产生形形色色的类名-dontskipnonpubliclibraryclasses #指定不忽略非公共类库-dontpreverify #不预校验,如果需要预校验,是-dontoptimize-ignorewarnings #屏蔽警告-verbose #混淆时记录日志-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #混淆时所采用的算法#-----------------不需要混淆第三方类库----------------------------------------------------------------dontwarn android.support.v4.** #去掉警告-keep class android.support.v4.** { *; } #过滤android.support.v4-keep interface android.support.v4.app.** { *; }-keep public class * extends android.support.v4.**-keep public class * extends android.app.Fragment#-----------------不需要混淆系统组件等-----------------------------------------------------------------keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class * extends android.preference.Preference-keep public class com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * { #保持native方法不被混淆 native <methods>;}-keepclasseswithmembers class * { #保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet);}-keepclasseswithmembers class * { #保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int);}-keepclassmembers class * extends android.app.Activity { #保持自定义控件类不被混淆 public void *(android.view.View);}
对apk的瘦身暂时写到这里,当然还有很多其他方式,以后会慢慢研究使用。
路漫漫其修远兮,吾将上下而求索!
- Android APK 瘦身
- Android APK 瘦身处理
- Android-APK瘦身实践
- Android APK瘦身经验总结
- Android apk瘦身
- Android Apk size瘦身
- Android APK 瘦身实践
- android apk瘦身方法
- Android Apk瘦身
- Android apk瘦身
- Android APK瘦身
- Android APK瘦身
- android apk瘦身实战
- Android apk瘦身
- Android apk瘦身
- Android APK 瘦身
- Android APK 瘦身
- Android apk 瘦身
- 【常识】—— 生物学
- 假期回国自学java,弱弱从头开始
- KERNEL32.dll的ExportTable以及如何查找导出的函数
- HTML表单元素基本用法
- 十九、Largest prime factor
- Android apk 瘦身
- Mysql分页Limt
- 河南省第十届acm情报传递
- 免费的论文查重网站
- Android开发常见人事面试题
- Dubbo之——消费端直连服务提供者(开发调试)
- 美丽的高精度计算
- 阿里云推出幸运券买ECS更加实惠
- [UVA](11461)Square Numbers ---完全平方数