删除APK中的无效资源
1、随着APK不断的迭代,APK中肯定会多出了很多无用的xml、图片资源。这些资源无疑加大了apk的大小,如果像这样一个一个找
,去查询资源是否被使用,无疑是个很大的工作量。我们可以通过
找到项目中没有被调用的资源,再按照需求进行删除。
2、通过混淆的时候优化,在gradle中配置
minifyEnabled true
// 移除无用的resource文件,开启minifyEnabled true 才有效果
shrinkResources true
可以有效的减少APK的大小
混淆时需要注意的第三方包
GSON
-keepattributes Signature
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.google.common.**{*;}
-keep class com.google.gson.**{*;}
-keep class com.google.gson.stream.** { *; }
-keep class org.json.**{*;}
Rx
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
EventBus
3.0以前
-keepclassmembers class ** {
public void onEvent*(**);
}
-keepclassmembers class ** {
public void onEventMainThread(**);
}
-keepclassmembers class ** {
public void onEventBackgroundThread(**);
}
-keepclassmembers class ** {
public void onEventAsync(**);
}
3.0EventBus采用的是注解的形式,方法名没有固定的形式。可以根据方法名进行处理