proguard打包异常

工程需要加入一个混淆过的jar包,奈何打包不成功,提示错误:

[2016-12-29 09:42:35 - PayElectricityCard] Proguard returned with error code 1. See console
[2016-12-29 09:42:35 - PayElectricityCard] Note: there were 2403 duplicate class definitions.
[2016-12-29 09:42:35 - PayElectricityCard]       (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
[2016-12-29 09:42:35 - PayElectricityCard] java.lang.IllegalArgumentException: Value is not a reference value [proguard.evaluation.value.InstructionOffsetValue]
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.evaluation.value.Value.referenceValue(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.optimize.evaluation.SimpleEnumUseSimplifier.isPoppingSimpleEnum(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.optimize.evaluation.SimpleEnumUseSimplifier.isPoppingSimpleEnum(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.optimize.evaluation.SimpleEnumUseSimplifier.visitVariableInstruction(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.instruction.VariableInstruction.accept(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.optimize.evaluation.SimpleEnumUseSimplifier.visitCodeAttribute(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.attribute.CodeAttribute.accept(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.ProgramMethod.attributesAccept(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.ProgramMethod.accept(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.ProgramClass.methodsAccept(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.ProgramClass.accept(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.classfile.ClassPool.classesAccept(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.optimize.Optimizer.execute(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.ProGuard.optimize(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.ProGuard.execute(Unknown Source)
[2016-12-29 09:42:35 - PayElectricityCard] 	at proguard.ProGuard.main(Unknown Source)

但是对于这个jar包,我已经在proguard.cfg文件中加了相关配置:

-libraryjars   libs/paycardbluelibraryplugin.jar

-dontwarn com.bde.parentcytransport.**
-keep class com.bde.parentcytransport.** { *; }

还是无法打包,然后就百度去了。。。有人说是proguard的版本问题,于是找到了链接:

http://blog.csdn.net/jiguangcanhen/article/details/41806599

便去下载了几个版本,结果替换proguard.jar之后,proguardgui.jar便无法启动了。。。所以我认为这个不能单独换,要替换也是proguard这个文件夹一起替换,把之前的proguard注释为proguard_bank即可。

让我惊奇的是单独替换proguard.jar之后,有些情况下竟然还能够打包成功,比如我在网上下载了三个版本的proguard.jar,其中有一个就能正常打包,可能刚好适配的缘故吧。。。但是这三个都无法启动proguardgui.jar,只是有一个可以打包成功 ,另两个打包都失败。。。


还是不太明白问题到底在哪里,于是把注意力放在打包的jar上,发现jar包有点小问题,就是包名有点小问题,

小问题就是这个jar包的工程我修改过包名,但是修改完包名后,manifest文件中的包名并没有修改,于是打包出来的jar就有问题了。

要修改包名,需要全部都修改好,才可以打包。

然后修改正确,打包jar导入到工程中libs下面,然后去看jar包下面的包和类是否能正常浏览观看,发现可以。

不懂的可以看看引用其他的包导入libs后,Android Private Library下的类目录是否正常


于是重新打包,这下竟然好了。。。。

于是切换到我之前有问题的proguard文件夹下重新打包,也好了。。。

原来问题还是出在打包出来的jar上,而不是proguard的版本上。有问题请仔细检查配置proguard.pro文件,仔细检查!

我原来用的proguard版本是4.7,网上下载了一个4.11的也是可以用的




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值