自Android 2.3 SDK发布后,Google便在Android SDK Tools里加入了proguard,proguard是一个可以对.java文件进行一定程度上的代码混淆,使用proguard是一件极方便工作,在你项目中没有其他外部Jar包的情况下,在“project.properties”文件里,添加一行:
proguard.config=proguard.cfg
代码即可,然后通过Android Tools(右击项目名)里导出APK即可,如果项目所使用的的SDK版本低于2.3,只需要进行%android_dir%/tools/lib目录,复制proguard.cfg文件到项目的根目录下导出APK即可。
这是一般情况,即无第三方Jar包,如果存在第三方Jar包,那么打开proguard.cfg文件进行编辑,在其中加入以下代码:
-libraryjars %lib_jar_path%
有几个Jar包,便添加几次,如在项目的libs目录下有a.jar,b.jar,c.jar三个Jar包:
-libraryjars libs/a.jar
-libraryjars libs/b.jar
-libraryjars libs/c.jar
此外,还有些特殊情况,会令导出发生异常,视具体异常情况而定,修改proguard.cfg文件。
比如出现了以下异常:
Warning: com.google.android.maps.MapView: can't find referenced class com.android.mkstubs.stubber.MethodStubber
Warning: com.google.android.maps.MapView$1: can't find referenced class com.android.mkstubs.stubber.MethodStubber
即:
Warning: %class_full_name%: can't find referenced class %class_full_name%
这种异常情况,需要在proguard.cfg文件中,添加以下代码:
-dontwarn %class_full_name%
即可,便以上面例子而言,应当如下:
-dontwarn com.google.android.maps.*
等等,此类情况修改proguard.cfg文件即可,还有种特殊情况,需要对引入的Jar包进行修改,如下:
Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
这是因为引用的Jar包中含有xmlpull类库,Android系统的类库中已经包含了xmlpull,这样混淆出现了冲突,解决办法是把它里面已存在的和系统库冲突的类去掉,就可以了,产生冲突的类可见控制台输出。
另外对不想混淆的类/方法/变量,可以使用-keep指定,具体参考proguard.cfg文件写法。
分享到:
相关推荐
Android 2_3 代码混淆proguard技术介绍 - Zy的技术心
其中包括第三方jar混淆报错及解决办法,以及普通的代码混淆办法,相信能给你帮助
Android Java代码混淆工具:ProGuard简介及使用.docx
android java代码混淆器·点击bin目录下的proguardgui.bat进行使用·
java代码混淆工具,配置灵活,易用,适用于android平台和其他java平台
新写的proguard代码混淆的文档 大家可以看看
如何混淆Android项目代码(ProGuard)防止反编译.rar
Android proguard4.5.1 代码混淆
Android分享:代码混淆那些事 前言 是一个开源的Java代码混淆器。它可以混淆Android项目里面的java代码,对的,你没看错,仅仅是java代码。它是无法混淆Native代码,资源文件drawable、xml等。 ProGuard作用 压缩: ...
看了好多博客论坛对proguard混淆android/java代码的介绍,自己用起来总出错。现总结具体用法步骤,并亲测无误,其中不乏参考之处还请见谅!
Java字节码的开源优化器 ProGuard是最受欢迎的Java字节码优化...ProGuard代码本身受版权保护,并根据GNU通用公共许可证(GPL)第2版的条款进行分发。用户手册也受版权保护,只能以原始形式与未修改的代码一起重新分发。
介绍了Android代码混淆的三种方法及可能出现的问题.通过jocky或proguard实现jar包混淆;通过proguard实现Android项目整体导出混淆。并总结了一些容易出现的问题
代码混淆—关于android被反编译的两种解决方案,使用方法参见我的博文:http://blog.csdn.net/online1989/article/details/7058743
混淆器版本4.4 可以用来混淆j2me android等Java代码 内涵可是编辑器 具体平台混淆
Java字节码的开源优化器 ProGuard是最受欢迎的Java字节码优化...ProGuard代码本身受版权保护,并根据GNU通用公共许可证(GPL)第2版的条款进行分发。用户手册也受版权保护,只能以原始形式与未修改的代码一起重新分发。
解决android中混淆代码签名导出报错的proguard.cfg 第三方jar包,可类似 -libraryjars libs/android-support-v4.jar 添加在文件中
为了保护我们的JAVA/Android代码,我们常使用proguard对代码进行混淆(http://proguard.sourceforge.net/)。 默认情况下,proguard混淆时将类/变量/方法重命名为a,b,c,...的格式。 我们可以通过配置-...
高版本Android项目下的proguard-project.txt,里边包含了常规混淆,以及防止第三方混淆的代码。
android proGuard,防止你辛苦写出来的代码被轻易的反编译,你,值得拥有
为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard的主要作用就是混淆。当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要的功能。 引用ProGuard官方的一段话...