1

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

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 APIs Platform 4.0,API 级别 14。

有人知道如何解决吗?

4

4 回答 4

2

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

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

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

于 2012-11-27T16:58:15.080 回答
0

Update : I've finally got it ! I took a newer /system/framework/com.google.android.maps.jar from ADK emulator instead of keeping the one from Cyanogen which was outdated from 2008.

于 2012-11-28T21:39:45.293 回答
0

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

编辑:应该没问题,因为该方法是从 API 3 开始的,但也许你错过了一些导入?

于 2012-10-29T10:45:08.143 回答
0

原因是你用理解它的编译器编译了这个方法。但是JVM在运行时不理解它。(不兼容问题)。

于 2012-10-29T09:44:32.977 回答