我正在尝试在(姜饼2.3.5)手机上建立官方android google map api v2样本。
我将android-support-v4.jar
添加到官方示例项目中。
我从<android-sdk>/extras/google-play-services/samples/maps
我在Eclipse中复制了示例应用程序,将google-play-services_lib
项目作为Android库引用,并使用Android SDK 4.1.2(api 16)构建了整个项目。
不幸的是,我启动应用程序时地图是空白的,我没有任何异常或消息。 我唯一得到的是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.j.k',从方法maps.y.ae.a中引用 VFY:无法解决Lmaps / y / ae中的新实例3571(Lmaps / j / k;);
我怀疑我在eclipse 3.8中的项目结构有些搞砸了。
我尝试了以下事情(即使是最愚蠢的)也无济于事。
我使用keytool生成了一个“debug.keystore”并更新了eclipse首选项(Android / Build / Keystore)。 当然,我注册了新的密钥库/ SHA1并获得了我在AndroidManifest文件中使用的新api密钥
我尝试使用以下目标构建我的两个项目:
我尝试将google-play-services_lib添加为项目依赖项,并在演示构建路径中添加为android库。 勾选匹配的导出复选框。
我下载了trulia real estate应用程序,据称在手机上使用v2 api以确保手机与新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>
以下是我的项目结构/构建路径的一些截图。
答案 0 :(得分:15)
我认为在应用api KEY时可能会出错。 我有同样的问题,最后我发现我打开了错误的服务。在https://code.google.com/apis/console/,
有Google Maps API v2
和Google Maps Android API v2
。
您应该使用Google Maps Android API v2
。
答案 1 :(得分:4)
我有完全相同的问题(所有配置相同,logcat中的maps.j.k内容)。但是,对于我来说,选择Google API作为构建目标解决了它。但这是Google API 4.2,因此我建议您安装更新并尝试使用更新的目标。
答案 2 :(得分:3)
我通过在 AndroiMainfest.xml 文件中使用de last targetSdkVersion 更改de targetSdkVersion 来解决此问题。
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
答案 3 :(得分:2)
您使用的是ProGuard吗?通常类名称如“a”,“b”等是ProGuard混淆类名的结果,也许Maps API会在发生这种情况时中断。如果是这种情况,您将需要禁用ProGuard或向proguard.cfg文件添加一些-keep
行。 This post显示了这些行的外观。
答案 4 :(得分:2)
就我而言,这是由于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"/>
中所述
答案 5 :(得分:1)
http://developer.android.com/sdk/index.html - 这是android..try中的adt包的链接,下载并重新开始..可能是你的ADT有问题。
答案 6 :(得分:0)
检查您已启用Google地图 Android API v2
的控制台API答案 7 :(得分:0)
我正在处理同样的问题。我试图实现com.example.mapdemo并且有点时间。
我将BasicMapActivity的代码复制到一个干净的新项目中,并使库看起来如上所述。
基本上,我无法上班。我在调试器中遇到“授权失败”错误。
然后,今天,我在Google控制台中准备密钥时,使用分号后的特定com.example.xxx专门为每个项目准备了新密钥。
我做了Project-&gt;每一步都干净。
我首先在调试器中运行它,然后运行。并且,如果我记得,在更改清单后几次。
然后,最后,他们工作了。最后,似乎需要为每个特定项目提供密钥。
答案 8 :(得分:0)
这对我有用。当您使用Google API控制台创建API密钥时,请务必将; com.example.mapdemo附加到SHA1指纹。 (我正在使用其他更适合我正在开发的另一个应用程序的东西。)在此解决方案中让我了解的是LogCat中的授权错误。
答案 9 :(得分:0)
在我的情况下,我添加了LocationSource接口,因此我可以获取位置数据,但我忘了添加:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
at Manifest文件。
答案 10 :(得分:0)
不要忘记使用单独的密钥来调试和发布应用版本!
答案 11 :(得分:0)
如果您已尝试过所有内容,请尝试卸载并重新安装您的应用:在我的手机上(S3 mini),首次使用错误的密钥启动后,我更正了它,但直到完全卸载后它才能正常工作。 也许使用某种缓存。