减小apk体积二

    xiaoxiao2021-12-14  24

    主流apk大小

    一   开启minifyEnabled代码混淆

    除了能对代码优化混淆,还能对字节码文件进行优化,缩减体积,一般能减小500k左右

    Proguard示例代码

    -optimizationpasses 5          # 指定代码的压缩级别 -dontusemixedcaseclassnames   # 是否使用大小写混合 -dontpreverify           # 混淆时是否做预校验 -verbose                # 混淆时是否记录日志 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  # 混淆时所采用的算法 -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.app.backup.BackupAgentHelper # 保持哪些类不被混淆 -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); } -keepclassmembers enum * {     # 保持枚举 enum 类不被混淆     public static **[] values();     public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆     public static final android.os.Parcelable$Creator *; } -keepattributes Signature #过滤泛型 -ignorewarnings #忽略警告 #zxing -dontwarn com.google.zxing.** -keep class com.google.zxing.** { *;} #gson -dontwarn com.google.gson.** -keep class com.google.gson.** { *;}

    二  开启 shrinkResources 

    能够删除无用资源,一些临时占位的图片

    这样开启上面二个功能就好了

    三 使用tinypng有损压缩

    png无损,jpg有损;jpg会有一定的压缩,占体积小;

    启动页,引导页,大背景,此类图片大概130kb左右,可以使用jpg替代;

    同一张图片,jpg比png大概小40%左右,瘦身大概300kb左右;

    四 so库的合理建议

    每每集成三方看见一大丢的so库感觉无法抉择

    只能是参考别人的

    armeabi 默认选项 支持所有 ARM* 设备 armeabi-v7a  支持基于 ARM* v7 的设备 支持硬件 FPU 指令 支持硬件浮点运算x86 x86   支持基于硬件的浮点运算的 IA-32 指令集 mips 支持二进制接口

    根据so库功能决定;根据自身应用想达到的兼容效果决定 瘦身效果明显,可能瘦身0-10m左右 分析了几个大型应用,armeabi必须包含,x86选择性包含,其他指令集极少包含

    微薄 armeabi qq armeabi 微信 armeabi uc浏览器 armeabi armeabi-v7a 美团 armeabi 天猫 armeabi 58同城 armeabi 今日头条 armeabi armeabi-v7a

    这么牛逼的公司都选择armeabi ,你懂的

    五 切图分辨率

    六 对assets目录优化

    assets目录下的db文件,静态文本都可以通过gzip之类的压缩 瘦身效果视静态文件大小,瘦身大概0-3m

    七 选择性使用webp图片

    参考网站

    http://isux.tencent.com/introduction-of-webp.html

    八 使用微信ResProguard方案

    参考网站

    http://blog.csdn.net/rzleilei/article/details/52205545

    九 小细节处理 瘦身效果有限

    1.一些纯色背景,边框使用shape文件替换

    2.使用矢量图

    Vector图像刚发布的时候,是只支持Android 5.0+的,对于Android pre-L的系统来说,并不能使用,所以,可以说那时候的Vector并没有什么卵用。 从AppCompat 23.2之后,Google对p-View的Android系统也进行了兼容,也就是说,Vector可以使用于Android 2.1以上的所有系统,只需要引用com.android.support:appcompat-v7:23.2.0以上的版本就可以了,这时候,Vector应该算是迎来了它的春天。 简单来说,一些矢量图可以用代码完成; 看具体情况,大概10kb左右;

    瘦身无极限

    转载请注明原文地址: https://ju.6miu.com/read-962222.html

    最新回复(0)