com.google.android.maps.GestureDetector上的NoSuchMethodError

时间:2012-10-29 09:37:43

标签: android

我的应用程序是使用谷歌地图。它适用于大多数设备。但是在一些未知的设备上,它会抛出异常:

Caused by: java.lang.NoSuchMethodError: android.view.ViewConfiguration.getScaledDoubleTapTouchSlop
at com.google.android.maps.GestureDetector.init(GestureDetector.java:393)
at com.google.android.maps.GestureDetector.<init>(GestureDetector.java:354)
at com.google.android.maps.GestureDetector.<init>(GestureDetector.java:329)
at com.google.android.maps.MapView.setup(MapView.java:330)
at com.google.android.maps.MapActivity.setupMapView(MapActivity.java:404)
at com.google.android.maps.MapView.<init>(MapView.java:289)
at com.google.android.maps.MapView.<init>(MapView.java:264)
at com.google.android.maps.MapView.<init>(MapView.java:247)
at mypackage.MyClass.<init>(MyClass.java:43)
... 41 more

项目目标是Google API Platform 4.0,API级别14。

有人知道如何解决它吗?

4 个答案:

答案 0 :(得分:2)

我的一个使用googlemaps的应用程序遇到了同样的问题。它在AndroVM和ADK模拟器上运行良好,但在我的Nextbook 7上使用Finless ROM修改了相同的丢失方法。我使用“baksmali”工具进行了进一步调查,发现我的NextBook上的/system/framework/framework.jar与其他工具不同,该方法实际上已经丢失了。

所以,也许您设备上的framework.jar也是罪魁祸首......

更新:我终于明白了! 我从ADK模拟器中获取了一个较新的/system/framework/com.google.android.maps.jar,而不是保留了自2008年以来Cyanogen的那个。

答案 1 :(得分:0)

原因是您已经使用了解它的编译器编译了此方法。但是JVM在运行时无法理解它。(不兼容问题)。

答案 2 :(得分:0)

可能是因为该应用程序已在旧的Android版本(4.0下)上运行。因此,当您的代码中调用该方法时,您获得了NoSuchMethodError,因为该方法在以前的API中不存在。

编辑:应该没问题,因为该方法是自API 3以来,但也许您错过了一些导入?

答案 3 :(得分:0)

更新:我终于明白了! 我从ADK模拟器中获取了一个较新的/system/framework/com.google.android.maps.jar,而不是保留了2008年过时的Cyanogen。