Android开发者工具16和proguard中的-keepclasseswithmembers问题

时间:2011-12-13 15:42:08

标签: android proguard

我最近安装了ADT 16,现在突出显示了一个问题,即我有一个过时的选项-keepclasseswithmembernames而不是-keepclasseswithnames。我已经修复了proguard.cfg文件,但lint拒绝识别修复程序并阻止Eclipse构建文件。

我当前的proguard.cfg文件:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

4 个答案:

答案 0 :(得分:9)

刚遇到同样的问题。我在proguard.cfg中将-keepclasseswithmembernames更改为-keepclasseswithmembers后,点击了Lint Warnings窗口(右上角)中的刷新按钮修复了它。

答案 1 :(得分:1)

在Lint警告窗口中,选择警告并单击“忽略类型按钮”(右上角,看起来像橡皮擦或其他东西)。

之后,转到http://b.android.com并提交错误。

更新:ADT无法刷新非Java和非XML文件,这里是问题的链接:

http://code.google.com/p/android/issues/detail?id=23196

正如较新的答案所示,点击“刷新”将清除错误。

答案 2 :(得分:1)

只需点击顶部工具栏中的“运行Android Lint”按钮即可。通常是“Android SDK Manager”旁边的按钮

enter image description here

答案 3 :(得分:0)

如果您的Eclipse构建在某种程度上变得混乱(比如在这种情况下),您通常只需使用 Project-&gt; Clean (这将导致构建开始)使Eclipse再次正确从头开始)。

至少对我来说,它还会再次调用Android Lint并清除类似的过时错误标记。