作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试设置一个集成了 Amazon IAP 的基本 ProGuard。但是,当我尝试导出我的 APK 时,出现以下错误:
[2012-06-17 10:59:44 - sc] Proguard returned with error code 1. See console
[2012-06-17 10:59:44 - sc] Unexpected error while performing partial evaluation:
[2012-06-17 10:59:44 - sc] Class = [com/amazon/inapp/purchasing/KiwiResponseHandler$PurchaseResponseHandlerRunnable]
[2012-06-17 10:59:44 - sc] Method = [run()V]
[2012-06-17 10:59:44 - sc] Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [java/lang/String] (with 4 known super classes) and [com/amazon/inapp/purchasing/KiwiPurchaseResponseCommandTask] (with 1 known super classes))
[2012-06-17 10:59:44 - sc] java.lang.IllegalArgumentException: Can't find common super class of [java/lang/String] (with 4 known super classes) and [com/amazon/inapp/purchasing/KiwiPurchaseResponseCommandTask] (with 1 known super classes)
[2012-06-17 10:59:44 - sc] at proguard.evaluation.value.ReferenceValue.generalize(ReferenceValue.java:344)
[2012-06-17 10:59:44 - sc] at proguard.evaluation.value.IdentifiedReferenceValue.generalize(IdentifiedReferenceValue.java:65)
[2012-06-17 10:59:44 - sc] at proguard.evaluation.value.ReferenceValue.generalize(ReferenceValue.java:481)
...
我有默认的 ProGuard 配置文件,并且我已经添加了:
-dontwarn com.amazon.**
-keep class com.amazon.** {*;}
-keepattributes *Annotation*
行。有什么建议吗?
最佳答案
亚马逊的推荐配置有一些可疑的东西。
1) -dontwarn
隐藏了一个更深层次的潜在问题,其中一些 Amazon 特定库不存在,但被引用以便 proguard 将尝试一些可能导致上述堆栈跟踪的有线优化。
2) -dontoptimize
正在禁用所有优化,这绝对是错误的,因为它很可能只是导致此问题的一个特定优化,并且 proguards 优化正在删除大量无效和未使用的代码来自您的应用程序及其库,因此它缩小了总 dex 大小。
我想修复 1) 是真正的解决方案。这最终可以通过从设备中提取 Amazon 的系统库并在构建时使它们存在(作为提供的库)来实现
应用程序。
对于 2) 你可以试试:
-dontwarn com.amazon.**
-keep class com.amazon.** {
*;
}
-optimizations !code/allocation/variable
这为我解决了这个问题。
关于android - 如何为 Amazon IAP 设置 ProGuard?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070143/
我是一名优秀的程序员,十分优秀!