【问题标题】:Do not optimize a specific class path with Proguard不要使用 Proguard 优化特定的类路径
【发布时间】:2014-09-26 14:19:35
【问题描述】:

我尝试在我的 android 应用程序中实现 Amazon In App Purchase。 Amazons documentation 需要在 proguard 规则中指定 -dontoptimize。

-dontoptimize 规则是一个全局选项,它将关闭所有优化,但我确实想优化其他代码。所以我的问题是如何指定proguard规则只优化亚马逊iap代码?

看来-keep 规则是不够的。这个问题与这个SO answer有关 但我要求一种方法来保持对其余代码的优化,同时允许 亚马逊 IAP 工作。

【问题讨论】:

    标签: android in-app-purchase proguard


    【解决方案1】:

    您可以通过过滤器限制“不”优化: -优化!代码/分配/变量

    Amazon IAP 需要 -dontoptimize 的原因有点棘手。

    首先,Amazon IAP documentation 需要 -dontwarn com.amazon.**

    如果你删除它,你会看到 proguard 抱怨它在包中找不到对某些类的引用:com.amazon.android.com.amazon.venezia..

    所以证明亚马逊in-app-purchasing-1.0.7.jar有外部依赖jar。

    现在有一个问题。当 proguard 执行优化任务时。它需要了解所有依赖库才能进行适当的优化(例如删除从未使用过的方法、无用的参数等)。

    虽然在这种情况下proguard 不知道外部依赖的amazon jar,但它会对in-app-purchasing-1.0.7.jar 进行一些错误的优化 .

    这也是亚马逊需要 -dontoptimize 的原因。

    这听起来是一个proguard的错误。但不幸的是,即使您更新到最新的 proguard (5.0),这个问题仍然存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多