虽然多年来我一直在阅读 StackOverflow 论坛,但这是我第一次在这里发帖。我知道我正在谈论的问题以前曾被问过,但是,正如我所看到的,似乎没有明确的答案,所以我尽可能详细地发布我的案例,看看是否有人可以提供帮助在我跳下悬崖之前,我明白我做错了什么。
“地图在调试模式下不起作用”的神话:是真的吗?我不止一次阅读过,在使用调试 API 密钥时,地图无法正确加载,但一旦应用发布并登录市场,问题就消失了……是这样吗?我是否可以假设地图运行良好,然后将其上传到市场,希望它能够按预期运行?(请说“是”,然后把我从这个无法加载的瓷砖活地狱中释放出来!)
我用我的应用程序做了什么:
使用“keytool”命令列出我的密钥库的证书指纹:
$ keytool -list -alias androiddebugkey -keystore ./.android/debug.keystore -storepass android -keypass android
使用上述步骤中的证书指纹创建了一个 API 项目并生成了一个 API 密钥。
在 AndroidManifest.xml 中添加 API 密钥和权限:
<uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="com.mycompany.test1.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="com.mycompany.test1.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <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" /> (...) <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AItaSyDGE2yil3tCr9NP45QVDPfmRUP-gNv7uLY" />
在我的活动的 XML 布局上添加了地图:
<com.google.android.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="AItaSyDGE2yil3tCr9NP45QVDPfmRUP-gNv7uLY" /> <!-- Though the Google page says to use the following code, Eclipse shows an error referring to the "xmlns" tag and it can't be compiled: --> <!-- <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/> -->
我尝试使用 Google API 在模拟器中编译,使用 Android 4.x,使用 Android 2.3、4.0 和 4.2 的三个真实设备,导出项目的 .apk 并直接从 USB 卡在设备上安装 APK,但是行为总是相同的:当试图显示地图时,LogCat 会出现以下错误:
IOException processing: 26
java.io.IOException: Server returned: 3
at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
at java.lang.Thread.run(Thread.java:856)
有人知道会发生什么吗?我已经按照 Google 指南进行了一千次,重新生成了我的 API 密钥,检查了我的清单,在模拟器、设备等设备上测试了应用程序,没有任何改变!正如我之前在这篇文章中所说,我已经读到地图在“测试”应用程序时无法进行测试,因此应该等到应用程序在市场上发布才能看到它们的工作。 ..但是,听起来我很奇怪!有任何想法吗?
提前感谢您的时间和精力!:)