我在运行时遇到错误:
无法找到课程' android.support.v7.widget.SearchView $ 5', 从方法中引用 android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11
我试图通过这个proguard配置来保持这个类:
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep class android.support.v7.widget.SearchView { public *; }
-keep class android.support.v7.widget.SearchView$* {
*;
}
-keep class android.support.v7.widget.SearchView** {
*;
}
-keep class android.support.v7.widget.SearchView$5 {
*;
}
但没有运气。这不是第一次通过配置来保持成员,但这次我不能重写代码以将匿名转换为内部类。
答案 0 :(得分:7)
这对我有用(没有公开):
-keep class android.support.v7.widget.SearchView { *; }
答案 1 :(得分:0)
确保您在<Android SDK>/tools/proguard
上拥有最新的proguard版本,然后查看proguard-android.txt
。最新的proguard版本为android提供了更好的配置。
可能对您有所帮助的一些定义:
-dontoptimize
-dontpreverify
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
答案 2 :(得分:0)
ProGuard在您的代码或库中找不到类android.support.v7.widget.SearchView $ 5。你应该检查你的支持jar中是否存在android / support / v7 / widget / SearchView $ 5.class。它似乎出现在我这里的最新版本中,所以也许你的副本已经损坏了。
请注意,添加-keep选项在这里无济于事。在使用这些选项之前,ProGuard会立即检查类之间的依赖关系。