我做了添加谷歌地图api的程序,但我收到了这个错误。抱歉语言不好。
09 12:20:55.359: W/dalvikvm(5918): Unable to resolve superclass of Lmaps/a/du; (406)
01-09 12:20:55.359: W/dalvikvm(5918): Link of class 'Lmaps/a/du;' failed
01-09 12:20:55.359: W/dalvikvm(5918): Unable to resolve superclass of Lmaps/a/ej; (2358)
01-09 12:20:55.359: W/dalvikvm(5918): Link of class 'Lmaps/a/ej;' failed
01-09 12:20:55.359: W/dalvikvm(5918): Unable to resolve superclass of Lmaps/j/k; (2374)
01-09 12:20:55.359: W/dalvikvm(5918): Link of class 'Lmaps/j/k;' failed
01-09 12:20:55.359: E/dalvikvm(5918): Could not find class 'maps.j.k', referenced from method maps.y.ae.a
01-09 12:20:55.359: W/dalvikvm(5918): VFY: unable to resolve new-instance 3566 (Lmaps/j/k;) in Lmaps/y/ae;
这是manifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="com.comparto.piso.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission
android:name="com.comparto.piso.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<application
........ >
<uses-library android:name="com.google.android.maps" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="api key" />
......
.....
在java代码中,我扩展了FragmentActivity,这里是onCreate代码
GooglePlayServicesUtil
.isGooglePlayServicesAvailable(getApplicationContext());
GoogleMap map = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
if (map != null) {
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
这里是布局xml
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="300px"
class="com.google.android.gms.maps.SupportMapFragment" />
答案 0 :(得分:5)
如果您的设备与Google地图库使用的API级别不同,那么来自Dalvik的所有“无法解析超类xxxx”和“类别xxxx链接失败”都是正常的。
您应该使用以下命令检查是否收到授权失败:
adb logcat | grep Maps
如果你看到这样的话:
E/Google Maps Android API(): Authorization failure.
然后,这意味着您没有在清单中提供正确的API密钥。请再次检查Google API Console(在 API访问部分中)是否已将正确的指纹和包名称对添加为described in the guide。
答案 1 :(得分:1)
在没有Google Play API的设备上运行时,通常会出现该错误消息。你打电话给isGooglePlayServicesAvailable()
,但你没有检查返回值。您应该检查以确保它在继续之前返回ConnectionResult.SUCCESS
。对于其他一些错误代码,您可以通过getErrorDialog()
提示他们升级/安装,例如 -
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
switch (resultCode) {
case ConnectionResult.SUCCESS: // proceed
break;
case ConnectionResult.SERVICE_MISSING:
case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
case ConnectionResult.SERVICE_DISABLED:
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 1);
dialog.show();
}
根据Google的说法,Google Play服务API需要“物理开发设备”,因此仿真器不会正式支持它们。因此,如果您在模拟器上运行,几乎可以肯定您缺少所需的服务。人们报告让它在模拟器中工作,但我没有尝试过自己。如果您想查看在模拟器上安装Google Play,可以查看this post中的答案。
答案 2 :(得分:1)
答案 3 :(得分:0)
如果您在布局xml中使用“class =”com.google.android.gms.maps.SupportMapFragment“,那么您现在在manifest.xml中使用Android 3.0或更低版本的android:minSdkVersion。
然后在下面看到我的链接网站,这有助于您了解在设备上运行Google地图之前应该安装和设置的内容。此链接非常简单,您可以获得要在设备上显示谷歌地图的操作。
答案 4 :(得分:0)
也许你的日食的SHA1键被更改了(EX:你可能在windows的主文件夹中删除了.android文件夹)所以这就是它验证错误的原因。您必须删除密钥并使用eclipse的新SHA1创建新密钥。
在此处重新生成新密钥并在几分钟内重新加载此页面,它将更新新密钥: https://console.developers.google.com/project/watchful-net-796/apiui/credential
记住!毕竟,您必须将新密钥复制到清单并重建项目。祝你好运!
答案 5 :(得分:0)
你缺少api密钥
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="api key" />
在值参数中输入api_key
google playService
版本也缺失了。添加
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
到manifest
标记内的<application