【问题标题】:Android Proguard configuration for the v7 Support Library ActionBarv7 支持库 ActionBar 的 Android Proguard 配置
【发布时间】:2013-08-19 20:25:59
【问题描述】:

我正在使用 v7 支持库在 Android 2.x 上显示 ActionBar。它工作得很好,但我必须在启用 Proguard 后修复一些类/方法未找到的错误。

对于需要保留哪些类有任何指导方针吗?

到目前为止,我有这些:

-keep public class android.support.v7.internal.widget.ActionBarContainer
-keep class android.support.v7.internal.widget.ActionBarView$HomeView
-keep public class android.support.v7.internal.widget.ActionBarContextView

它现在似乎可以工作,但我不太确定它不会在某个阶段崩溃,因为某些 XML 文件中引用了一些其他所谓的内部类。

【问题讨论】:

    标签: android proguard android-support-library


    【解决方案1】:

    我解决了:

    -dontwarn android.support.v7.**
    -keep class android.support.v7.** { *; }
    -keep interface android.support.v7.** { *; }
    

    【讨论】:

    • 你从哪里得到的?谷歌在任何地方都有这个吗? “**”是否意味着递归的所有文件和子文件夹? “{}”里面的部分是什么(抱歉我不记得了)?
    • 他们不使用它?这很奇怪。
    • 不建议这样做。它将保留所有库类,即使是您不需要的类。见developer.android.com/tools/support-library/setup.html
    【解决方案2】:

    我使用这个,有点类似于 v4 版本的建议:

    -keep class android.support.v7.internal.** { *; }
    -keep interface android.support.v7.internal.** { *; }
    

    【讨论】:

    • 你在哪里找到关于 v4 的建议?
    • 嗯,我不记得了。如果你用谷歌搜索它,你会发现很多参考资料,包括这里的 SO。也许它没有在任何地方正式建议,我不知道,但它相当合乎逻辑并且它也有效。 :-)
    • 在没有“内部”的情况下添加这两行(例如 android.support.v7.**)解决了我的问题。同样,我为 v4 添加了这些行。
    • 对于使用 EasyShare 小部件(或任何其他小部件)的任何人,您可能也希望添加以下内容:-keep class android.support.v7.widget.** { *; }
    【解决方案3】:

    我从Android Proguard Snippet得到它

    -keep public class android.support.v7.widget.** { *; }
    -keep public class android.support.v7.internal.widget.** { *; }
    -keep public class android.support.v7.internal.view.menu.** { *; }
    
    -keep public class * extends android.support.v4.view.ActionProvider {
        public <init>(android.content.Context);
    }
    

    希望它会起作用。

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多