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

Android开发者工具16和问题-proguard中的keepclasseswithmembers,android,proguard,Android,Proguard,我最近安装了ADT 16,它现在突出显示了一个问题,即我使用了过时的选项-keepclassswithmembernames,而不是-keepclassswithnames。我已经修复了proguard.cfg文件,但lint拒绝识别该修复,并阻止Eclipse构建该文件 我当前的proguard.cfg文件: -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreve

我最近安装了ADT 16,它现在突出显示了一个问题,即我使用了过时的选项-keepclassswithmembernames,而不是-keepclassswithnames。我已经修复了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 *;
}

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

之后,转到并提交一个bug

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


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

也有同样的问题。在proguard.cfg中将-keepclassswithmembernames更改为-keepclassswithmembers之后,我通过单击Lint Warnings窗口右上角的刷新按钮修复了此问题。

以防您的Eclipse构建在这种情况下变得混乱,您通常可以通过使用Project->Clean使Eclipse重新正确运行,这将导致构建从头开始


至少对我来说,这也再次调用了Android Lint并清除了类似的陈旧错误标记。

只需单击顶部工具栏中的Runs Android Lint按钮。通常是Android SDK管理器旁边的按钮


这一个修复了错误,我甚至不知道接受答案是什么意思。它的意思就是:忽略这个错误以防止它弹出。重新加载在16.0.1中工作,但必须手动完成,这是很少有人期望的。以下是与ADT相关的问题:我更喜欢这个答案,因为它实际上是为了解决这个问题,而不是主动忽略它。当然,我同意检查应该是自动的,但现在Lint不是。另一个解决方案是将错误类型更改为警告。虽然这解决了无法生成的问题,但忽略静态代码分析警告只能作为最后的手段,并且如果知道自己在做什么的话。在这种情况下,还有其他可用的解决方案。当然。你和其他人对这个答案投了反对票,但没有看到的是,这是当时唯一的解决办法。重新启动Eclipse、清理、打开/关闭、重新导入等都不起作用。另外,这并不完全是一个静态代码分析警告,只是一个配置文件chek。我知道我在做什么,我同意。但是,由于这不再是唯一的解决办法,我发现否决你的答案是唯一的办法,让未来的读者了解自你回答以来ADT的变化。你可以更新你的答案来避免这种情况,对吗?关于“知道”的评论是针对原始海报的知识,因为他可能不太了解这一点。很抱歉在这里造成混乱。任何人都可以编辑答案,这是如此。不管怎样,现在已经完成了。至于OP,他确实修复了文件,所以忽略错误没有什么坏处。