我的应用程序是使用谷歌地图。它适用于大多数设备。但是在一些未知的设备上,它会抛出异常:
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。
有人知道如何解决它吗?
答案 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。