proguard 不混淆jar混淆器怎么用,请教

proguard使用指南 (陈柏屹)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
proguard使用指南 (陈柏屹)
上传于||文档简介
&&p​r​o​g​u​a​r​d​使​用​指​南​ ​(​陈​柏​屹​)
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩18页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&博客访问: 571812
博文数量: 69
博客积分: 6236
博客等级: 准将
技术积分: 596
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
-injars &androidtest.jar【jar包所在地址】&-outjars &out【输出地址】
-libraryjars & &'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的库的jar,用于解析injars所指定的jar类】
-optimizationpasses 5-dontusemixedcaseclassnames 【混淆时不会产生形形色色的类名 】-dontskipnonpubliclibraryclasses 【指定不去忽略非公共的库类。&】-dontpreverify 【不预校验】
-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
-keep public abstract interface com.asqw.android.Listener{public protected ; &【所有方法不进行混淆】}-keep public class com.asqw.android{public void Start(java.lang.String); 【对该方法不进行混淆】}
-keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)】
-keepclasseswithmembers class * { 【保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。】public (android.content.Context, android.util.AttributeSet);}
-keepclasseswithmembers class * {public (android.content.Context, android.util.AttributeSet, int);}
-keepclassmembers class * extends android.app.Activity {【保护指定类的成员,如果此类受到保护他们会保护的更好&】public void *(android.view.View);}
-keepclassmembers enum * {public static **[] values();public static ** valueOf(java.lang.String);}
-keep class * implements android.os.Parcelable {【保护指定的类文件和类的成员】public static final android.os.Parcelable$Creator *;}
加入第三方jar包之后常出现的几个异常:
proguard returned with error code 1.See console
情况1:Proguard returned with error code 1. See console&Error: C:/Documents (系统找不到指定文件)&后来发现是因为将整个工程放到了桌面上,而桌面的目录是C:/Documents and Settings/Administrator/桌面,在这里面有空格,而proguard进行发编译的时候是不允许有空格的如果换了正确路径还不好用的话,直接删除proguard就好了
注意:SDK和程序路径最好不要有空格符
Proguard returned with error code 1. See console&异常:
java.lang.ArrayIndexOutOfBound***ception
解决办法:将proguard.cfg中的"-dontpreverify"改成“-dontoptimize”
参考文章:
我把项目中生成的proguard文件夹(此时文件夹是空的)删掉,然后再重新运行项目,就OK 了。
[ 13:22:32 - ZMKSMarket_Build_v1.0] Proguard returned with error code 1. See console
[ 13:22:32 - ZMKSMarket_Build_v1.0] java.io.IOException: Can't read [proguard.ClassPathEntry@106082] (No such file or directory)
[ 13:22:32 - ZMKSMarket_Build_v1.0]&at proguard.InputReader.readInput(InputReader.java:230)
[ 13:22:32 - ZMKSMarket_Build_v1.0]&at proguard.InputReader.readInput(InputReader.java:200)
[ 13:22:32 - ZMKSMarket_Build_v1.0]&at proguard.InputReader.readInput(InputReader.java:178)
[ 13:22:32 - ZMKSMarket_Build_v1.0]&at proguard.InputReader.execute(InputReader.java:100)
[ 13:22:32 - ZMKSMarket_Build_v1.0]&at proguard.ProGuard.readInput(ProGuard.java:195)
[ 13:22:32 - ZMKSMarket_Build_v1.0]&at proguard.ProGuard.execute(ProGuard.java:78)
[ 13:22:32 - ZMKSMarket_Build_v1.0]&at proguard.ProGuard.main(ProGuard.java:499)
抛出这样的异常的原因是第三方jar的引用路径不对,没有找到这个需要忽略混淆的jar包.
阅读(3417) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。ProGuard简介& & &
ProGuard是一个SourceForge上非常知名的开源项目。官网网址是:。(为防被墙,文末有ProGuard 4.6下载地址)& & &
Java的字节码一般是非常容易反编译的。为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard的主要作用就是混淆。当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要的功能。& & &
引用ProGuard官方的一段话来介绍就是:& & &
ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition.Android Eclipse开发环境与ProGuard& & &
在Android 2.3以前,混淆Android代码只能手动添加proguard来实现代码混淆,非常不方便。而2.3以后,Google已经将这个工具加入到了SDK的工具集里。具体路径:SDK\tools\proguard。当创建一个新的Android工程时,在工程目录的根路径下,会出现一个proguard的配置文件proguard.cfg。也就是说,我们可以通过简单的配置,在我们的elipse工程中直接使用ProGuard混淆Android工程。& & &
具体混淆的步骤非常简单。首先,我们需要在工程描述文件default.properties中,添加一句话,启用ProGuard。如下所示:# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
# This file must be checked in Version Control Systems.
# To customize properties used by the Ant build system use,
# &build.properties&, and override values to adapt the script to your
# project structure.
# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-10
proguard.config=proguard.cfg
复制代码这样,Proguard就可以使用了。当我们正常通过Android Tools导出Application Package时,Proguard就会自动启用,优化混淆你的代码。 () 17:08:43& & & 导出成功后,你可以反编译看看混淆的效果。一些类名、方法名和变量名等,都变成了一些无意义的字母或者数字。证明混淆成功!proguard.cfg配置& & & 稍微深入想一下混淆后的结果,你就会发现,如果一些提供给外部的类、方法、变量等名字被改变了,那么程序本身的功能就无法正常实现。那么Proguard如何知道哪些东西是可以改名,而哪些是不能改变的呢?& & &
这个是靠proguard.cfg文件来进行配置的。Android工程中默认自动生成的proguard.cfg已经针对Android的一般情况进行了配置,我们打开这个配置文件。内容大概如下:-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-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
-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);
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
复制代码它主要保留了继承自Activity、Application、Service、BroadcastReceiver、ContentProvider、BackupAgentHelper、Preference和ILicensingService的子类。因为这些子类,都是可能被外部调用的。& & & 另外,它还保留了含有native方法的类、构造函数从xml构造的类(一般为View的子类)、枚举类型中的values和valueOf静态方法、继承Parcelable的跨进程数据类。& & & 在实际的一个工程项目中,可能Google自动生成的配置不能胜任我们的混淆工作。所以,我们往往需要自己编写一些ProGuard配置。这方面的资料在官网的Manual -& Usage里有详细说明。大家可以研究一下。参考资料《》《》ProGuard 4.6下载地址: 附件: 亲,您没有权限下载或查看附件喔:-)
马上 或 吧!
Powered by
CopyRight &android开发混淆文件project.properties和proguard-project.txt详解——Android学习网
&&& 关键字:android,混淆文件,project.properties,proguard-project.txt,如何混淆
&&& 作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。 &&& Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹,这个就是代码混淆的工具。
&&& 让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了
完整的default.properties文件应该如下:
# This file is automatically generated by Android Tools.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!## This file must be checked in Version Control Systems.## To customize properties used by the Ant build system use,# "build.properties", and override values to adapt the script to your# project structure.# Project target.target=android-9proguard.config=proguard.cfg
大功告成,正常的编译签名后就可以防止代码被反编译了。
&&& 需要注意的是在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。
&&& 如果需要对项目进行全局混码,只需要进行一步操作:
&&& 将project.properties文件中的
&&& “#& proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”中的“#”去掉就可以了。
&&& 但是如果有一些代码不能被混淆,比如需要加入了so文件,需要调用里面的方法,那么调用JNI访问so文件的方法就不能被混码。在导出的时候,可能不会报错。但是在手机上运行的时候,需要调用so文件的时候,就会报某某方法无法找到。这个时候就需要用到proguard-project.txt。
&&&&在老版本中,创建项目的时候,会给出proguard.cfg,但是在的新版中创建项目则不会有任何提示。这个时候需要只要将proguard.cfg的内容加入到proguard-project.txt中,再根据自己的需要进行编辑即可。
&&& proguard.cfg详解请参看
本文为Android开发学习网原创/整理,未经允许不得转载,如需转载请联系:
读后点评 感谢支持
&&&&本站安卓版APP正式上线,欢迎下载
本站提供的android教程仅用于android培训,对任何法律问题及风险不承担任何责任 本站部分内容来自网络,如有侵权,请联系本站
广告/友情链接请联系:QQ: Email:
安卓版:&QQ群:

我要回帖

更多关于 proguard 不混淆jar 的文章

 

随机推荐