Android MapActivity上的NoClassDefFoundError

Android MapActivity上的NoClassDefFoundError,android,google-maps,Android,Google Maps,在某些设备上,我们的应用程序在启动地图活动时因NoClassDefFoundError而崩溃 是的,我们有权限和库以及运行MapActivity所需的所有东西。99.9%的设备(所有的设备都有谷歌服务…)都能正常工作 然而,有2-3台我从未听说过的设备(例如:Prestigio-PAP4040_DUO或MID-PAD-FMD700P或rockchip AN9G2)似乎没有谷歌服务,也不可能打开地图活动 有没有可能检测到这一点,并可能显示类似“您的手机不支持谷歌地图,对不起” (是的,我们可以忽略

在某些设备上,我们的应用程序在启动地图活动时因NoClassDefFoundError而崩溃

是的,我们有权限和库以及运行MapActivity所需的所有东西。99.9%的设备(所有的设备都有谷歌服务…)都能正常工作

然而,有2-3台我从未听说过的设备(例如:Prestigio-PAP4040_DUO或MID-PAD-FMD700P或rockchip AN9G2)似乎没有谷歌服务,也不可能打开地图活动

有没有可能检测到这一点,并可能显示类似“您的手机不支持谷歌地图,对不起”

(是的,我们可以忽略数千台2-3台设备,但我们尝试支持所有设备)

有没有可能检测到这一点,并可能显示类似“您的手机不支持谷歌地图,对不起”

如果您的
MapActivity
没有绑定到启动程序图标,可能是这样。我猜您的
NoClassDefFoundError
来自
MapActivity
或来自Maps V1 SDK插件的其他内容。在这种情况下,在尝试启动任何
MapActivity
之前,请使用
Class.forName()
检测是否有来自Maps V1的类

这说明了这一点。启动器图标绑定到
主题.NoDisplay
活动,该活动具有以下
onCreate()

如果查看
MapActivity
是否存在的测试成功,我们可以安全地启动
MapActivity
(此处命名为
NooYawk
)。如果我们得到一个异常,我们只需退出一个
Toast

有没有可能检测到这一点,并可能显示类似“您的手机不支持谷歌地图,对不起”

如果您的
MapActivity
没有绑定到启动程序图标,可能是这样。我猜您的
NoClassDefFoundError
来自
MapActivity
或来自Maps V1 SDK插件的其他内容。在这种情况下,在尝试启动任何
MapActivity
之前,请使用
Class.forName()
检测是否有来自Maps V1的类

这说明了这一点。启动器图标绑定到
主题.NoDisplay
活动,该活动具有以下
onCreate()


如果查看
MapActivity
是否存在的测试成功,我们可以安全地启动
MapActivity
(此处命名为
NooYawk
)。如果我们遇到异常情况,我们只需带着
祝酒辞退出即可

谢谢您的快速回答。对我来说似乎是合法的,我很快就会接受它,但是:你知道如何在没有一千台设备的情况下测试它吗?我们这里有几个BB10设备,我们将在它们上进行测试(编译、侧加载、测试),但可能对其他人有任何提示?@Christoph:使用没有Google API的模拟器映像。在模拟器中测试,效果非常好。Thx如果你能把catch(异常e){改为catch(ClassNotFoundException e),也没问题(永远不要捕获所有内容),谢谢你的快速回答。对我来说似乎是合法的,我很快就会接受。但是:你知道如何在没有一千台设备的情况下测试这个吗?我们这里有两台BB10设备,我们将在它们上进行测试(编译、侧载、测试)但可能对其他人有任何提示吗?@Christoph:使用没有Google API的仿真器映像。在仿真器中进行测试,效果完美。Thx如果您可以将catch(异常e){更改为catch(ClassNotFoundException e),也可以(从不捕获所有内容)
  public void onCreate(Bundle instanceState) {
    super.onCreate(instanceState);

    try {
      Class.forName("com.google.android.maps.MapActivity");
      startActivity(new Intent(this, NooYawk.class));
    }
    catch (Exception e) {
      Toast
            .makeText(this,
                       "Google Maps are not available -- sorry!",
                       Toast.LENGTH_LONG)
            .show();
    }

    finish();
  }