Google MapFragment空白(白色)无法find类'maps.jk'

我试图build立一个(姜饼2.3.5)手机官方安卓谷歌地图api v2示例。 我添加了android-support-v4.jar到官方的示例项目。

我从<android-sdk>/extras/google-play-services/samples/maps的官方教程中find了示例

我在Eclipse中复制了示例应用程序,将google-play-services_lib项目作为Android库引用,并使用Android SDK 4.1.2(api 16)构build完成。

不幸的是,我启动应用程序的地图是空白的,我没有任何exception或消息。 我唯一得到的是logcat中的可疑行:

  Unable to resolve superclass of Lmaps/a/du; (411) Link of class 'Lmaps/a/du;' failed Unable to resolve superclass of Lmaps/a/ej; (2363) Link of class 'Lmaps/a/ej;' failed Unable to resolve superclass of Lmaps/j/k; (2379) Link of class 'Lmaps/j/k;' failed 

ERR从方法maps.y.ae.a中找不到类“maps.j.k”
VFY:无法parsingLmaps / y / ae中的新实例3571(Lmaps / j / k;);

我怀疑在Eclipse 3.8中的项目结构有些混乱。

我尝试了以下的事情(即使是最愚蠢的)也无济于事。

1.无效的API密钥?

我用keytool生成了一个“debug.keystore”,并更新了eclipse的首选项(Android / Build / Keystore)。 当然,我注册了这个新的keystore / SHA1,并获得了我在AndroidManifest文件中使用的一个新的API密钥

2.错误的项目目标?

我试图build立我的两个项目,具有以下目标:

  • Android 4.2.1
  • Google Api 4.2.1

3.将google-play-services_lib添加为项目依赖项

我试图添加谷歌播放services_lib作为一个项目依赖性被添加为演示版本path中的Android库的顶部。 并勾选匹配的导出checkbox。

4.在手机上testinggoogle maps api v2

我下载了据说在手机上使用v2 api的trulia房地产应用程序,以确保手机与新的api兼容

这是示例应用程序的清单

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mapdemo" android:versionCode="1" android:versionName="1.0" > <permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" /> <!-- Copied from Google Maps Library/AndroidManifest.xml. --> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <!-- External storage for caching. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- My Location --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Maps API needs OpenGL ES 2.0. --> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <!-- End of copy. --> <application android:hardwareAccelerated="true" android:icon="@drawable/ic_launcher" android:label="@string/demo_title" > <!-- You must insert your own Google Maps for Android API v2 key in here. --> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="XXXXXXXX" /> <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".BasicMapActivity" android:label="@string/basic_map" /> <activity android:name=".CameraDemoActivity" android:label="@string/camera_demo" /> <activity android:name=".EventsDemoActivity" android:label="@string/events_demo" /> <activity android:name=".GroundOverlayDemoActivity" android:label="@string/groundoverlay_demo" /> <activity android:name=".LayersDemoActivity" android:label="@string/layers_demo" /> <activity android:name=".LocationSourceDemoActivity" android:label="@string/locationsource_demo" /> <activity android:name=".MarkerDemoActivity" android:label="@string/marker_demo" /> <activity android:name=".OptionsDemoActivity" android:label="@string/options_demo" /> <activity android:name=".PolygonDemoActivity" android:label="@string/polygon_demo" /> <activity android:name=".PolylineDemoActivity" android:label="@string/polyline_demo" /> <activity android:name=".ProgrammaticDemoActivity" android:label="@string/programmatic_demo" /> <activity android:name=".TileOverlayDemoActivity" android:label="@string/tile_overlay_demo" /> <activity android:name=".UiSettingsDemoActivity" android:label="@string/uisettings_demo" /> <activity android:name=".RawMapViewDemoActivity" android:label="@string/raw_mapview_demo" /> <activity android:name=".RetainMapActivity" android:label="@string/retain_map" /> <activity android:name=".MultiMapDemoActivity" android:label="@string/multi_map_demo" /> </application> </manifest> 

这里是我的项目结构/构buildpath的一些截图。

项目结构

目标和图书馆

建立路径

Solutions Collecting From Web of "Google MapFragment空白(白色)无法find类'maps.jk'"

我有完全相同的问题(所有configuration相同,在logcat中的maps.jk的东西)。 不过,我selectGoogle API作为构build目标解决了这个问题。 但那是Google APIs 4.2,所以我build议你安装更新,然后尝试更新的目标。

我想也许你在应用api KEY的时候会犯一些错误。 我有同样的问题,最后我发现我打开了不正确的服务。 请访问https://code.google.com/apis/console/

Google Maps API v2Google Maps Android API v2

您应该使用Google Maps Android API v2

我通过在AndroiMainfest.xml文件中更改了de targetSdkVersion并使用de last targetSdkVersion来解决了这个问题。

 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> 

你在使用ProGuard吗? 通常,诸如“a”,“b”等的类名称是ProGuard混淆类名称的结果,也可能是在发生这种情况时Maps API中断。 如果是这种情况,您将不得不禁用ProGuard或添加一些-keep行到您的proguard.cfg文件。 这篇文章显示了这些行可能看起来像什么。

就我而言,这是由于2个问题

  1. 在我的手机上最新的Google地图应用程序没有安装(实际上根本没有谷歌地图)
  2. 我没有在我的清单中设置所有必需的权限
 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <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"/>
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <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"/> 

https://developers.google.com/maps/documentation/android/start#installing_the_google_maps_android_v2_api中所logging

http://developer.android.com/sdk/index.html -这是在Android..try下载这个ADT包的链接,重新开始..可能是你的ADT有问题。

检查您启用Google Maps Android API v2的控制台API

我正在处理同样的问题。 我试图实现com.example.mapdemo,并有一段时间。

我将BasicMapActivity的代码复制到一个干净的新项目中,并使库如上所示。

基本上,我无法去工作。 debugging器中出现“授权失败”错误。

然后,今天,我准备了新的密钥,专门为每个项目准备的密钥在谷歌控制台分号后的具体com.example.xxx。

我在每一步都做了项目 – >清理。

我先在debugging器中运行它,然后运行。 而且,如果我记得,在清单上做了几次改变。

最后,他们工作。 似乎最终要为每个特定的项目都要一个钥匙。

这是为我工作的。 当您使用Google API控制台创buildAPI密钥时,请确保将; com.example.mapdemo附加到SHA1指纹。 (我正在使用另一个更适合我正在开发的另一个应用程序的其他东西。)在这个解决scheme中,我提到的是LogCat中的授权错误。

在我的情况下,我添加了LocationSource接口,所以我可以获取位置数据,但我忘了添加:

  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

在清单文件。

不要忘记使用单独的键来debugging和发布版本的应用程序!

如果您已经尝试了一切,请尝试卸载并重新安装您的应用程序:在我的手机(S3 mini)上,在第一次启动后使用错误的键,我更正了它,但是直到完全卸载才能正常工作。 也许使用某种caching。