码迷,mamicode.com
首页 > 其他好文 > 详细

Proguard 案例

时间:2015-04-16 23:51:50      阅读:315      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!