1

虽然多年来我一直在阅读 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 密钥,检查了我的清单,在模拟器、设备等设备上测试了应用程序,没有任何改变!正如我之前在这篇文章中所说,我已经读到地图在“测试”应用程序时无法进行测试,因此应该等到应用程序在市场上发布才能看到它们的工作。 ..但是,听起来我很奇怪!有任何想法吗?

提前感谢您的时间和精力!:)

4

0 回答 0