如何为亚马逊iap设置proguard?

我正在尝试与亚马逊iap集成基础程序。 但是,当我尝试导出我的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* 

它的线条。 有什么建议出了什么问题?

  • Androidunit testing启用了proguard
  • 在proguard中保留内部接口方法名称
  • 在android studio中的android - proguard错误
  • 不能用proguard收缩乱舞
  • Android Studio 0.5.0重build不与Proguard一起使用
  • ProGuard在Android上导致SSL握手错误
  • proguard-android.txt和proguard-rules.pro有什么区别? - Android
  • 在Eclipse中使用Proguard for Android得到了错误
  • 根据亚马逊的SDK文档 ,以下是您应该包含的行:

    防止对应用内购买API进行模糊处理

    将应用内购买API合并到库中时,您需要指定要“保留”而不是混淆的类。 在proguard.cfg文件中的任何位置添加以下行。

     -dontwarn com.amazon.** -keep class com.amazon.** {*;} -keepattributes *Annotation* 

    此外,您还需要跳过Proguard的优化步骤。

     -dontoptimize 

    注意:确保删除任何其他处理优化的标志,或任何可能与上述设置冲突的标志。

    亚马逊的推荐配置有一些可疑的东西。

    1) -dontwarn隐藏了一个更深层次的基础问题,其中一些亚马逊特定库不存在,但引用,以便proguard将尝试一些有线优化,这可能导致上述堆栈跟踪。

    2) -dontoptimize正在禁用所有优化,这是绝对错误的,因为它很可能只是导致此问题的一个特定优化,并且proguards优化正在从您的应用程序及其库中删除大量已死和未使用的代码,因此它会缩小总的dex大小。

    我认为修复1)是真正的解决方案。 这最终可以通过从设备中提取Amazons系统库并在构建时使它们(作为提供的lib)存在来实现
    该应用程序。

    对于2)你可以尝试:

     -dontwarn com.amazon.** -keep class com.amazon.** { *; } -optimizations !code/allocation/variable 

    这解决了我的问题。

    此外,您还需要将优化过程的数量减少到1,或跳过proguard的优化步骤。

    – 优化通过1

    要么

    -dontoptimize