Android 4.0 ProGuard 代码混淆 以及 proguard returned with error code 1.See console异常的解决方法
最近呢说要上线,就去找了下上线的方法。。。
之前做过代码混淆,用的是progarud.cfg,但是呢自己反编译了之后还是无效,然后就丢着先不管了,因为实在不知道什么情况。
今天来上线的时候结果总是报错,总是报proguard returned with error code 1.See console错误,到网上查了下情况,分为三种:
情况1:
Proguard returned with error code 1. See console
Error: C:/Documents (系统找不到指定文件)
这个是因为有空格引起的,proguard进行发编译的时候是不允许有空格的。所以要注意工程所放位置是否有空格。
如果换了正确路径还不好用的话,直接删除proguard就好了
注意:SDK和程序路径最好不要有空格符
情况2:
Proguard returned with error code 1. See console
异常:
java.lang.ArrayIndexOutOfBoundsException
解决办法:将proguard.cfg中的"-dontpreverify"改成“-dontoptimize”
把项目中生成的proguard文件夹(此时文件夹是空的)删掉,然后再重新运行项目,就OK 了。
情况3:
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] Proguard returned with error code 1. See console
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] java.io.IOException: Can't read proguard.ClassPathEntry@106082
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] at proguard.InputReader.readInput(InputReader.java:230)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] at proguard.InputReader.readInput(InputReader.java:200)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] at proguard.InputReader.readInput(InputReader.java:178)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] at proguard.InputReader.execute(InputReader.java:100)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] at proguard.ProGuard.readInput(ProGuard.java:195)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] at proguard.ProGuard.execute(ProGuard.java:78)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] at proguard.ProGuard.main(ProGuard.java:499)
抛出这样的异常的原因是第三方jar的引用路径不对,没有找到这个需要忽略混淆的jar包。
仔细想了一下,我的是直接保存的,保存路径里确实没出现空格,最符合我的应该就是第三种情况了,(因为自己这报出的错和上面的不大一样,所以只好分析下了)。混淆,难道是我之前那里不对?
想到自己写的程序是可以运用到4.0的,因为2.3的和4.0的总归不一样了,就想是不是这里出现什么差错了,所以直接尝试找4.0的是怎么混淆:
其实Android 4.0要用ProGuard比2.3更简单:在Eclipse中打开工程目录下的project.properties文件,该文件中有以下两行:
To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
根据这段说明,只要将proguard.config前面的#去掉,就可以利用ProGuard来混淆代码了!当然,默认的设置是不带优化功能的,可以用以下设置来加上代码优化功能:
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
然后只要经过数字签名之类的编译后,代码就是混淆的了。
注意:如果用Eclipse里的Run或Build Project/Build All来生成Apk,是不会混淆代码的
完成这个混淆的部分后,再次弄数字签名那些,就不再报那错误了,总算是生成了。。。
谢谢kris提供的http://www.cnblogs.com/ghj1976/archive/2011/07/18/2109381.html,比我自己找的签名方法详细多了。。。
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息
原文作者: 樱蝴蝶
问题一:
[2013-06-28 11:12:10 - ] Proguard returned with error code 1. See console
[2013-06-28 11:12:10 - ] Note: there were 1 duplicate class definitions.
[2013-06-28 11:12:10 - ] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find superclass or interface android.os.Parcelable$ClassLoaderCreator
....
问题一解决方法:
这个问题是由于代码混淆引起的,找不到引用包。
只需在你的proguard.cfg中添加如下两行即可。
-ignorewarnings
-libraryjars libs/android-support-v4.jar
你可以根据你的项目提示,添加需要的jar。
备注:
如果添加上面两行后依然打包不成功,那么你需要修改位于
android-sdk-windows\tools\proguard\bin的目录下的: proguard.bat 文件,
用记事本打开,修改如下:
把
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
改为:
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
即可!
此方法是把当前版本SDK改成和之前SDK版本中含有的proguard.bat文件一致!
Android 4.0 ProGuard 代码混淆 以及 proguard returned with error code 1.See console异常的解决方法的更多相关文章
- Android打包失败Proguard returned with error code 1. See console
问题一: [2013-06-28 11:12:10 - ] Proguard returned with error code 1. See console [2013-06-28 11:12:10 ...
- Proguard returned with error code 1. See console
满世界的bug. 微信支付,Windows的远程桌面. Android的 , Proguard returned with error code 1. See console解决办法" 真的 ...
- 混淆时报:Proguard returned with error code 1. See console
发生这个错误是因为打包混淆时找不到我们的引用包,有的人可能说我没有引用什么Library啊,事实上,我们现在的项目创建时就默认有v4包,这是google提供的兼容包,主要为了应对Android3.0以 ...
- Android ProGuard代码混淆技术详解
前言 受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI ...
- ProGuard代码混淆技术详解
前言 受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI ...
- Java代码混淆工具ProGuard
目录 Java代码混淆工具ProGuard 简介 描述 作用的环境 功能 工作原理 下载 使用时注意事项 版本问题 JDK位数问题 Java的字节码验证问题 关于使用类似于Hibernate的对象关系 ...
- 浅谈Android保护技术__代码混淆
浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元 ...
- Android Studio环境下代码混淆+签名打包
Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...
- Cordova Android项目如何做代码混淆
我想修改build.gradle配置 可是这个文件明确写了// GENERATED FILE! DO NOT EDIT!可是还是试了试: if (cdvReleaseSigningProperties ...
随机推荐
- 自定义构造方法和description方法
知识回顾在第5讲中已经介绍了如何定义类和创建并初始化对象,比如有Student这个类1.Student.h 1 #import <Foundation/Foundation.h>23@in ...
- [重写库函数]atoi
算法分析 1. 若字符串开头是空格,则跳过所有空格,到第一个非空格字符,如果没有,则返回0. 2. 若第一个非空格字符是符号+/-,则标记isPositive的真假,这道题还有个局限性,那就是在c++ ...
- Linux学习之nl命令
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- php中date函数获取当前时间的时区误差解决办法
例:echo date('Y-m-d H:i:s', time()); 输出时间:2008-10-12 02:32:17 但实际时间是:2008-10-12 10:32:17时间误差8个小时 PHP手 ...
- Android TextView文字超出一屏不能显示其它的文字 解决方案
在android上面让TextView 过多的文字实现有滚动条,之前想简单了以为设置TextView的属性就可以实现,结果还是需要ScrollView配合使用,才能达到滚动条的效果有两种方式实现, 一 ...
- IP地址、子网掩码和地址分类
http://blog.csdn.net/bluishglc/article/details/47909593?utm_source=tuicool&utm_medium=referral 实 ...
- 限制**类型物料不能输入BOM
应用 Oracle Bill Of Materiel 层 Level Function 函数名 Funcgtion Name CUX_BOMFDBOM 表单名 Form Name CUXBOMFD ...
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ...
- JAVA I/O使用方法(转)
下面四张图表明了类之间的继承关系,其中红色.加粗的类名是常用的类. 常用转换 FileReader——>BufferedReader BufferedReader in= new Buffere ...
- 通过iframe在其父窗口中打开隐藏元素
先上代码 $(".login-box,#dl,.top_01 a:eq(1)").click(function(){ if(self!=top){ parent.$("# ...