首页 > 其他 > 详细

Proguard 案例

时间:2015-04-16 23:50:27      阅读:441      评论:0      收藏:0      [点我收藏+]

Proguard的配置,啥都不说了,全都是泪。
搞android的兄弟,将代码用Proguard混淆后,app出现闪退。整了一下午,后台的捉急了,也参加进来整了。
说下项目架子

  • gradle 项目管理工具
  • okHttp gson joda-time

多余的不说,直接上最后能用的progurd配置

-dontpreverify
-repackageclasses ‘‘
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*

-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.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}

-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.content.Context {
   public void *(android.view.View);
   public void *(android.view.MenuItem);
}

-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

-dontwarn rx.**

-dontwarn okio.**

-dontwarn com.squareup.okhttp.**
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }

-dontwarn retrofit.**
-dontwarn retrofit.appengine.UrlFetchClient
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
    @retrofit.http.* <methods>;
}

-keepattributes Signature
-keep class sun.misc.Unsafe { *; }

#关键的地方,一定要将model层包 使用 keep class
-keep class com.<model>.** { *; }

#删除日志
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
    public static *** i(...);
}

build.gradle也需要添加额外的依赖

#版本不要换,必须1.4,1.4之上的版本不行
compile ‘org.joda:joda-convert:1.4‘

还有一个问题就是android代码充斥着大量的System.out.println o(╯□╰)o。
后用正则 空格 替换掉 system\.out\.print.*\)\;

Proguard 案例

原文:http://my.oschina.net/myprogworld/blog/402646

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!