java.lang.NoSuchMethodError:类Landroid / util / MathUtils中没有静态方法dist(FFFF)F

时间:2018-11-20 16:39:42

标签: android

SDK升级到28后,滑动屏幕出现问题

日志

W / com.xxx.xxxx:访问隐藏的方法Landroid / util / MathUtils;-> dist(FFFF)F(暗灰色列表,链接) E / ContentCatcher:拦截器:dispatchTouchEvent-错误:java.lang.NoSuchMethodError:类Landroid / util / MathUtils中没有静态方法dist(FFFF)F;或它的超类(“ android.util.MathUtils”的声明出现在/system/framework/framework.jar!classes2.dex中)

4 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题。我的测试电话是带有Android 9.0的MI MIX 2s。但是我在Android 9.0的Pixel上找不到此错误。

答案 1 :(得分:0)

我也遇到了同样的问题。我的测试电话是带有Android 9.0的MI MIX 2s。但是我在Android 9.0的Pixel上找不到此错误。

您可以尝试在AndroidManifest.xml->应用程序中设置android:debuggable =“ false”

答案 2 :(得分:0)

我的问题也一样。当我有:

android:targetSdkVersion="27"

AndroidManifest.xml 中,我可以毫无问题地访问隐藏的API,但是更改为:

android:targetSdkVersion="28"

这不再可能。代码构建良好,应用程序也正常启动,应用程序启动时我可以看到此类日志:

Accessing hidden method Landroid/bluetooth/BluetoothHeadsetClient;->startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z (dark greylist, linking)

但是,当我通过按钮点击触发此方法时,应用崩溃并导致崩溃:

Caused by: java.lang.NoSuchMethodError: No virtual method startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z in class Landroid/bluetooth/BluetoothHeadsetClient; or its super classes (declaration of 'android.bluetooth.BluetoothHeadsetClient' appears in /system/framework/framework.jar)

此行为实际上已记录在here中,是Google的一项设计决策。您可以通过以下几种方式将您的应用程序列入白名单或使用平台密钥对其进行签名,这将允许您使用隐藏的API。您可以在我分享的链接中了解它们。

答案 3 :(得分:0)

这是MIUI的错误,这是我以前在小米的同事确认的

顺便说一句,当我在 https://developer-support.myscript.com/support/discussions/topics/16000024921