android 代码混淆

来源:互联网 发布:入驻淘宝的费用是多少 编辑:程序博客网 时间:2024/06/15 00:04

首先 :打开



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 *;    
 }   


 



0 0