刪除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採用的是註解的形式,方法名沒有固定的形式。可以根據方法名進行處理