点击视图时抛出NoSuchMethodException

问题描述 投票:0回答:1

我在Play商店中发布了一个启用了proguard规则的应用,并且我收到了来自Android 4.4和4.2的一些错误报告,并带有此跟踪错误

java.lang.IllegalStateException: 
      at android.view.View$1.onClick (View.java:3949)
      at android.view.View.performClick (View.java:4633)
      at android.view.View$PerformClick.run (View.java:19270)
      at android.os.Handler.handleCallback (Handler.java:733)
      at android.os.Handler.dispatchMessage (Handler.java:95)
      at android.os.Looper.loop (Looper.java:146)
      at android.app.ActivityThread.main (ActivityThread.java:5602)
      at java.lang.reflect.Method.invokeNative (Method.java)
      at java.lang.reflect.Method.invoke (Method.java:515)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1283)
      at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099)
      at dalvik.system.NativeStart.main (NativeStart.java)
    Caused by: java.lang.NoSuchMethodException: 
      at java.lang.Class.getConstructorOrMethod (Class.java:472)
      at java.lang.Class.getMethod (Class.java:857)
      at android.view.View$1.onClick (View.java:3942)
      at android.view.View.performClick (View.java:4633)
      at android.view.View$PerformClick.run (View.java:19270)
      at android.os.Handler.handleCallback (Handler.java:733)
      at android.os.Handler.dispatchMessage (Handler.java:95)
      at android.os.Looper.loop (Looper.java:146)
      at android.app.ActivityThread.main (ActivityThread.java:5602)
      at java.lang.reflect.Method.invokeNative (Method.java)
      at java.lang.reflect.Method.invoke (Method.java:515)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1283)
      at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099)
      at dalvik.system.NativeStart.main (NativeStart.java)

由于没有引用被调用的methodActivity,并且我无法复制它,因此我不知道该如何解决。 (尽管有些类在kotlin中,但大多数项目在Java中)

在proguard文件中,我排除了域模型和一些改进的类,例如:

# Application classes that will be serialized/deserialized over Gson
-keep class com.example.mypackage.DataModel.** { *; }
-keep class com.example.mypackage.WS.** { *; }

提前感谢!

android proguard
1个回答
0
投票
更新项目时(版本版本,appCompat-> androidX ...),我被迫纠正某些皮棉用途,其中之一是更改将TextView扩展为AppCompatTextView的自定义TextView。

[我已经忘记了,在旧的Android版本中,当您从AppCompatView扩展自定义视图时,所有xml onClick属性将不再起作用,并且会引发NoSuchMethodException。

您可以在这里找到一些参考:

Could not find a method onClick(View) in the activity class TintContextWrapper for onClick if using themes

Could not find custom method in androidx.appcompat.widget.TintContextWrapper for onClick handler in MaterialButton

© www.soinside.com 2019 - 2024. All rights reserved.