Android dexguard java.lang.IllegalArgumentException:Class不';不支持元数据注册

Android dexguard java.lang.IllegalArgumentException:Class不';不支持元数据注册,android,obfuscation,illegalargumentexception,nosuchmethoderror,dexguard,Android,Obfuscation,Illegalargumentexception,Nosuchmethoderror,Dexguard,我正在使用dexguard进行模糊处理。我已经在我的项目中实现了google contacts sync。当我调用contact service类时,出现了此错误。我无法找到正确的错误解决方案。我也查看了映射文件,但在映射文件中我无法得到任何解决方案。 我使用了很多选项,比如keep class和keepclassmembers,但我还是遇到了同样的问题 ContactsService contactsService = new ContactsService("MYAPPLICATION_N

我正在使用dexguard进行模糊处理。我已经在我的项目中实现了google contacts sync。当我调用contact service类时,出现了此错误。我无法找到正确的错误解决方案。我也查看了映射文件,但在映射文件中我无法得到任何解决方案。 我使用了很多选项,比如keep class和keepclassmembers,但我还是遇到了同样的问题

ContactsService  contactsService = new ContactsService("MYAPPLICATION_NAME");
当我调用上面的类时,我得到了错误。这是google联系人服务类

下面是错误日志

java.lang.IllegalArgumentException: Class class o.ڹ doesn't support metadata registration.
at o.ԁ.ˊ(:153)
at o.ԁ.ˊ(:121)
at o.ԁ.ˊ(:384)
at o.Ϋ.ˊ(:533)
at o.Ϋ.ˋ(:455)
at o.Ϋ.ˊ(:42)
at o.গ.ˋ(:144)
at o.ܪ.ˊ(:130)
at o.ᓷ.<init>(:536)
at o.ᓶ.<init>(:201)
at o.ᓶ.<init>(:174)
at o.ᓼ.<init>(:89)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.buzzboard.contacts.fragment.AddEditContactFragment.initContactsService(:1020)
at com.buzzboard.contacts.fragment.AddEditContactFragment.onCreateView(:244)
at android.support.v4.app.Fragment.performCreateView(:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(:947)
at  android.support.v4.app.FragmentManagerImpl.moveToState(:1126)
at android.support.v4.app.BackStackRecord.run(:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(:1489)
at     android.support.v4.app.FragmentManagerImpl$1.run(:454)
at    android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5021)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodException: registerMetadata [class o.ԁ]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getDeclaredMethod(Class.java:640)
at o.ԁ.ˊ(:139)
java.lang.IllegalArgumentException:类o.ڹ不支持元数据注册。
在o.ԁ.ˊ(:153)
在o.ԁ.ˊ(:121)
在o.ԁ.ˊ(:384)
在o.Ϋ.ˊ(:533)
在o.Ϋ.ˋ(:455)
在o.Ϋ.ˊ(:42)
在o。গ.ˋ(:144)
在o.ܪ.ˊ(:130)
在o。ᓷ.(:536)
在o。ᓶ.(:201)
在o。ᓶ.(:174)
在o。ᓼ.(:89)
位于java.lang.reflect.Constructor.constructNative(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于com.buzzboard.contacts.fragment.AddEditContactFragment.initContactsService(:1020)
位于com.buzzboard.contacts.fragment.AddEditContactFragment.onCreateView(:244)
位于android.support.v4.app.Fragment.performCreateView(:1786)
位于android.support.v4.app.FragmentManagerImpl.moveToState(:947)
位于android.support.v4.app.FragmentManagerImpl.moveToState(:1126)
在android.support.v4.app.backbackbackrecord.run(:739)上
在android.support.v4.app.FragmentManagerImpl.execPendingActions(:1489)
在android.support.v4.app.FragmentManagerImpl$1.run(:454)
位于android.os.Handler.handleCallback(Handler.java:733)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5021)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:827)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.NoSuchMethodException:registerMetadata[class o.ԁ]
位于java.lang.Class.GetConstructorMethod(Class.java:472)
位于java.lang.Class.getDeclaredMethod(Class.java:640)
在o.ԁ.ˊ(:139)

请帮帮我。我还保留了一些google contact services类。

查看com.google.gdata.model.MetadataRegistry的源代码和文档,似乎有些类需要包含一个静态方法“registerMetadata”,然后通过反射访问它。类似地,com.google.gdata.model.Element似乎需要一个字段“KEY”。由于ProGuard或DexGuard无法知道这一点,因此您需要保留这些字段和方法的原始名称:

-keepclassmembers class * extends com.google.gdata.model.Element {
    public static com.google.gdata.model.ElementKey KEY;
    public static void registerMetadata(com.google.gdata.model.MetadataRegistry);
}

谢谢你的回答。你的回答可以接受。我这么做了。很抱歉在这里看到你@Eric,但是我能听听你对这篇文章的看法吗?您好,我想请您注意这个问题,非常感谢您的帮助