proguard打包异常

来源:互联网 发布:查理.普斯 知乎 编辑:程序博客网 时间:2024/06/05 20:12

工程需要加入一个混淆过的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
原创粉丝点击