Android Proguard与应用内购买;“重复邮政编码输入”;错误
我正在使用包括一个文件的应用内计费(按照developer.android.com执行步骤) InAppBillingService.aidl 正如这里所建议的-> 出于安全原因,我们需要使用progaud混淆代码 现在,导出启用proguard的已签名apk会出现以下错误 重复的zip条目[android_6861407322325970495.jar:com/android/vending/billing/iInapBillingService$Stub$Proxy.class] 如有任何想法/建议,将不胜感激。 谢谢 更新: 以下是完整的跟踪Android Proguard与应用内购买;“重复邮政编码输入”;错误,android,in-app-purchase,proguard,in-app-billing,Android,In App Purchase,Proguard,In App Billing,我正在使用包括一个文件的应用内计费(按照developer.android.com执行步骤) InAppBillingService.aidl 正如这里所建议的-> 出于安全原因,我们需要使用progaud混淆代码 现在,导出启用proguard的已签名apk会出现以下错误 重复的zip条目[android_6861407322325970495.jar:com/android/vending/billing/iInapBillingService$Stub$Proxy.class] 如有任何想
java.io.IOException: Can't write [C:\Users\<Name>\AppData\Local\Temp\android_2083818169284424504.jar] (Can't read [C:\Users\<Name>\AppData\Local\Temp\android_6558830429113811056.jar] (Duplicate zip entry [android_6558830429113811056.jar:com/android/vending/billing/IInAppBillingService$Stub$Proxy.class]))
at proguard.OutputWriter.writeOutput(OutputWriter.java:264)
at proguard.OutputWriter.execute(OutputWriter.java:160)
at proguard.ProGuard.writeOutput(ProGuard.java:372)
at proguard.ProGuard.execute(ProGuard.java:153)
at proguard.ProGuard.main(ProGuard.java:492)
Caused by: java.io.IOException: Can't read [C:\Users\<Name>\AppData\Local\Temp\android_6558830429113811056.jar] (Duplicate zip entry [android_6558830429113811056.jar:com/android/vending/billing/IInAppBillingService$Stub$Proxy.class])
at proguard.InputReader.readInput(InputReader.java:230)
at proguard.InputReader.readInput(InputReader.java:200)
at proguard.OutputWriter.writeOutput(OutputWriter.java:253)
... 4 more
Caused by: java.io.IOException: Duplicate zip entry [android_6558830429113811056.jar:com/android/vending/billing/IInAppBillingService$Stub$Proxy.class]
at proguard.io.JarWriter.getOutputStream(JarWriter.java:139)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:105)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:92)
at proguard.io.ClassRewriter.read(ClassRewriter.java:68)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.JarReader.read(JarReader.java:65)
at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
at proguard.InputReader.readInput(InputReader.java:226)
... 6 more
java.io.IOException:无法写入[C:\Users\\AppData\Local\Temp\android\u 20838169284424504.jar](无法读取[C:\Users\\AppData\Local\Temp\android\u 6558830429113811056.jar](重复的zip条目[android\u 655883042911381056.jar:com/android/napping/billingservice$Stub$Proxy.class]))
在proguard.OutputWriter.writeOutput(OutputWriter.java:264)
在proguard.OutputWriter.execute处(OutputWriter.java:160)
在proguard.proguard.writeOutput(proguard.java:372)
在proguard.proguard.execute(proguard.java:153)
位于proguard.proguard.main(proguard.java:492)
原因:java.io.IOException:无法读取[C:\Users\\AppData\Local\Temp\android6558830429113811056.jar](重复的zip条目[android6558830429113811056.jar:com/android/vending/billingservice$Stub$Proxy.class])
在proguard.InputReader.readInput(InputReader.java:230)
在proguard.InputReader.readInput(InputReader.java:200)
在proguard.OutputWriter.writeOutput(OutputWriter.java:253)
... 4更多
原因:java.io.IOException:重复的zip条目[android6558830429113811056.jar:com/android/vending/billing/IInAppBillingService$Stub$Proxy.class]
位于proguard.io.JarWriter.getOutputStream(JarWriter.java:139)
在proguard.io.FilteredataEntryWriter.getOutputStream(FilteredataEntryWriter.java:105)中
在proguard.io.FilteredataEntryWriter.getOutputStream(FilteredataEntryWriter.java:92)中
在proguard.io.ClassRewriter.read(ClassRewriter.java:68)
在proguard.io.filteredataentryreader.read(filteredataentryreader.java:87)
位于proguard.io.JarReader.read(JarReader.java:65)
在proguard.io.directoryppump.readFiles(directoryppump.java:65)
在proguard.io.directoryppump.pumpdata条目(directoryppump.java:53)中
在proguard.InputReader.readInput中(InputReader.java:226)
... 还有6个
很可能确实存在重复条目。可能有些库既可以作为依赖项使用,也可以作为子目录中的副本使用。即使没有proguard,也可能显示错误
应该有中间的apk-s,你可以试着看看最新的apk里面有什么
我还建议尝试从命令行构建。(OTOH,上次我尝试时遇到了非常非信息性的错误,类似于“null returned 1”,也就是说,来自未知组件的非零错误代码,日志中有一些信息性更强的错误。)
您还可以尝试手动删除错误消息(在窗口中选择它们(仅叶,而不是根),然后按“Del”),清理项目并重新构建它。如果您的ProGuard配置中有
-injars bin/classes
,请尝试删除它。您是否尝试使用-verbose
选项运行ProGuard?您可以准确地看到正在添加的复制库的内容(以及时间)。也许这对您有所帮助
根据ProGuard文件:
警告:无法写入资源。。。重复的邮政编码条目
您的输入jar包含多个同名的资源文件。ProGuard继续照常复制资源文件,跳过
具有以前使用过的名称的任何文件。同样,警告可能是错误的
但有一些问题的迹象,因此建议移除
复制品。一种方便的方法是在
输入罐。没有关闭这些警告的选项
在库jar Android6558830429113811056.jar中有一个重复的资源条目“IInAppBillingService$Stub$Proxy.class”
您可以尝试使用-outjars
-outjars类路径
指定输出JAR(或WAR、EAR、ZIP或目录)的名称。已处理的前一个输入选项的输入
将被写入指定的jar。这允许您收集
将输入jar组的内容转换为相应的输出组
罐。此外,可以过滤输出条目,如中所述
过滤器部分。每个已处理的类文件或资源文件都是
然后使用匹配的筛选器写入第一个输出条目,在
输出jar的组
必须避免让输出文件覆盖任何输入文件。为了更好
可读性,可以使用多个-outjars选项指定类路径条目。
如果没有任何-outjars选项,就不会写入jar
或者,如果您使用的是
-injars
,您可以配置一个,谢谢您的回复。清理/重新构建不起任何作用。此外,它不是编译时错误,没有progaud,一切都很好。无法删除该错误。当使用密钥库签名时应用真正的模糊处理时,会出现错误。谢谢你解决了吗-在我的情况下,injars不起作用