详细讲解Android对自己的应用代码进行混淆加密防止反编译 android 混淆后反编译

详细讲解Android对自己的应用代码进行混淆加密防止反编译 android 混淆后反编译

更多交流请加入:Android优秀交流群114559024

1.查看项目中有没有proguard.cfg。

2.如果没有那就看看这个文件中写的什么吧,看完后将他复制到你的项目中。

-optimizationpasses5

-dontusemixedcaseclassnames

-dontskipnonpubliclibraryclasses

-dontpreverify

-verbose

-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*

-keeppublic class * extends android.app.Activity

-keeppublic class * extends android.app.Application

-keeppublic class * extends android.app.Service

-keeppublic class * extends android.content.BroadcastReceiver

-keeppublic class * extends android.content.ContentProvider

-keeppublic class * extendsandroid.app.backup.BackupAgentHelper

-keeppublic class * extends android.preference.Preference

-keeppublic classcom.android.vending.licensing.ILicensingService

-keepclasseswithmembernamesclass * {

native ;

}

-keepclasseswithmembersclass * {

public (android.content.Context,android.util.AttributeSet);

}

-keepclasseswithmembersclass * {

public (android.content.Context, android.util.AttributeSet,int);

}

-keepclassmembersenum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keepclass * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

3.复制到项目中后打开project.properties文件


4.打开后在项目中加上一句话:proguard.config=proguard.cfg

5.这样就开始按照正常的签名对自己的应用进行签名,生成后的apk经过反编译后就会和源代码有很大的不一样,不过这一步你会遇到很多问题,根本就签名不成功。例如:①如果工程引入了android-support-v4的jar类库,那么在工程打包混淆时,就会出现报错提示你:Youmayneedtospecifyadditionallibraryjars(using'-libraryjars')。②引用第三方包等问题

6.那就详细讲解5中出现的问题

如果工程引入了android-support-v4的jar类库,那你就在proguard.cfg里的后面,添加如下内容:

-libraryjars/android-support-v4.jar

-dontwarnandroid.support.v4.**

-keepclass android.support.v4.** { *; }

-keeppublic class * extends android.support.v4.**

-keeppublic class * extends android.app.Fragment

然后你再打包看看,应该可以正常生成apk安装包了。

如果出现:"类1can't find referenced class 类2" 字面上的意思就是类1找不到类2的引用;它会建议你:"Youmay need to specify additional library jars (using'-libraryjars').";

需要使用-libraryjars加上项目中使用到的第三方库就OK了。

例如:-libraryjars/android-support-v4.jar

注意:这里引用方式是当前工程的根目录(也可以配置其他目录),也就是说,你要把第三方jar放到当前目录下,否则就会警告说找不到jar文件!

如果出现: can't find superclass orinterfaceandroid.os.Parcelable$ClassLoaderCreator,碰到这样的情况,可以使用-dontwarncom.xx.yy.**,不对错误提出警告。

注意:使用这个方式的话,要确保自己没有用到这个库里面的类!否则就会抛ClassNotFoundException!

如果在工程中确实用到了该类,采用上面方式还是不行。这个时候就要再增加一项:-keep class com.xx.yy.** {*;},让当前类不混淆。

总结:

对于引用第三方包的情况,可以采用下面方式避免打包出错:

-libraryjars/aaa.jar

-dontwarncom.xx.yy.**

-keepclass com.xx.yy.** { *;}

最后打包成功,祝君成功混淆加密!

7.附上完整的proguard.cfg

-optimizationpasses5

-dontusemixedcaseclassnames

-dontskipnonpubliclibraryclasses

-dontpreverify

-verbose

-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*

-dontwarncom.slidingmenu.**

-keepclass com.slidingmenu.** { *;}

-libraryjars/libs/android-support-v4.jar

-dontwarnandroid.support.v4.**

-keepclass android.support.v4.** { *; }

-keeppublic class * extends android.support.v4.**

-keeppublic class * extends android.app.Fragment

-keeppublic class * extends android.app.Activity

-keeppublic class * extends android.app.Application

-keeppublic class * extends android.app.Service

-keeppublic class * extends android.content.BroadcastReceiver

-keeppublic class * extends android.content.ContentProvider

-keeppublic class * extendsandroid.app.backup.BackupAgentHelper

-keeppublic class * extends android.preference.Preference

-keeppublic classcom.android.vending.licensing.ILicensingService

-keepclasseswithmembernamesclass * {

native ;

}

-keepclasseswithmembersclass * {

public (android.content.Context,android.util.AttributeSet);

}

-keepclasseswithmembersclass * {

public (android.content.Context, android.util.AttributeSet,int);

}

-keepclassmembersenum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keepclass * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/339433.html

更多阅读

如何制作自己的在线代码测试器酷 在线代码测试器

首先将下面的代码稍作修改后粘贴到在桌面右击新建文档记事本另存为“xxx.html”(网页的形式)上传到网络空间,得到你上传的网址代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0Transitional//EN"><!-- saved fromurl=(0053)htt

如何完善自己的人格 大学对自己的要求

如何完善自己的人格————岳晓东人的成长过程就是不断了解自我、提升自我、完善自我的过程。一个人的人格,在10岁之前基本上是父母基因遗传的作用,但后来则越来越是个人努力与环境因素共同作用的结果。人格完善就是对个人的性格特点

2016对自己的年终总结 给自己的年终总结

系列专题:年终营销盘点   多年的职业生涯使我养成了一个习惯,每到年末,都要为当年做个总结,为来年做个规划,用这样的方式记录下自己走过的路。  2012年是不平静的一年,大到国家政治,小到行业变革,有太多的内容值得书写。作为商业社会中

声明:《详细讲解Android对自己的应用代码进行混淆加密防止反编译 android 混淆后反编译》为网友这点痛算什么分享!如侵犯到您的合法权益请联系我们删除