首先 :打开
project.properties 文件中的proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 这段配置, 没有的可以直接加上这个配置。
然后:在 proguard-project.txt 文件中配置不需要混淆的代码
例如你在项目中引用了第三方jar, 因第三方jar属于不需要混淆的范围,这时你就需要在proguard-project.txt 文件中配置,以下我以picasso.jar为示例 为大家讲解一下。
在混淆picasso.jar包时 会出现
Warning: com.squareup.picasso.OkHttpDownloader:
#can't find referenced class com.squareup.okhttp.OkHttpClient的警告错误,导致你无法打包签名apk, 这时你就需要在 proguard-project.txt 中配置以下信息
-dontwarn com.squareup.picasso.**
-keep class com.squareup.picasso.**{*;}
注意我标注的红色区域, 就会说明com.squareup.picasso 这个包中的信息不需要被混淆。当你在混淆打包的时候出现类似的问题 都可以用这个配置来解决。
以下是我完整的 proguard-project.txt 配置文件
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-dontoptimize
-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
#以上的内容 基本上所有的混淆apk 都需要配置, 无需去关注, 这里我也不做过多的说明了
#提示 Warning: com.squareup.picasso.OkHttpDownloader:
#can't find referenced class com.squareup.okhttp.OkHttpClient
-dontwarn com.squareup.picasso.**
-dontwarn com.litesuits.android.**
-keep class com.squareup.picasso.**{*;}
-keep class com.litesuits.android.**{*;}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
#-keepclasseswithmembernames class * {
# public <init>(android.content.Context, android.util.AttributeSet, int);
#}
#-keep class members enum * {
# public static **[] values();
# public static ** valueOf(java.lang.String);
#}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}