【问题标题】:When using Proguard, do you need a separate config for each referenced library?使用 Proguard 时,是否需要为每个引用的库单独配置?
【发布时间】:2015-01-06 21:08:27
【问题描述】:

我的应用程序引用了 HoloEverywhere 和 SherlockActionBar,它们都是工作空间内的项目。当我仅为应用程序启用 Proguard 时,它会崩溃并给出以下错误:

11-15 11:50:11.090: E/AndroidRuntime(24823): Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.app.Activity, int]
11-15 11:50:11.090: E/AndroidRuntime(24823):    at com.actionbarsherlock.a.a(Unknown Source)
11-15 11:50:11.090: E/AndroidRuntime(24823):    at org.holoeverywhere.a.a.l(Unknown Source)
11-15 11:50:11.090: E/AndroidRuntime(24823):    at org.holoeverywhere.a.a.setContentView(Unknown Source)

这是因为我只为应用启用了 Proguard,而不是其他工作区项目 HE 和 ABS?

我在sdk中使用的是默认的proguard-project.txt,并没有添加任何额外的规则。

【问题讨论】:

    标签: android proguard


    【解决方案1】:

    不,你没有。

    使用这些规则来保持引用的类不被混淆。

    -keep class com.actionbarsherlock.** {*;}
    -keep class org.holoeverywhere.** {*;}
    

    【讨论】:

    • {*;}是什么意思
    【解决方案2】:

    这也有帮助

    ## ActionBarSherlock 4.4.0 specific rules ##
    
    -keep class android.support.v4.app.** { *; }
    -keep interface android.support.v4.app.** { *; }
    -keep class com.actionbarsherlock.** { *; }
    -keep interface com.actionbarsherlock.** { *; }
    -keepattributes *Annotation*
    
    ## hack for Actionbarsherlock 4.4.0, see        https://github.com/JakeWharton/ActionBarSherlock/issues/1001 ##
    -dontwarn com.actionbarsherlock.internal.**
    

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      相关资源
      最近更新 更多