安卓地图视图加载

3

我正在制作一个安卓应用程序,其中使用了地图视图。当从电脑安装时,在设备上它们可以完美运行。但是当相同的构建通过安卓市场在设备上安装时,地图无法加载。以下是logcat输出。

10-03 15:54:51.784: WARN/System.err(12994): java.io.IOException: Server returned: 3
10-03 15:54:51.784: WARN/System.err(12994):     at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
10-03 15:54:51.784: WARN/System.err(12994):     at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
10-03 15:54:51.784: WARN/System.err(12994):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
10-03 15:54:51.784: WARN/System.err(12994):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
10-03 15:54:51.784: WARN/System.err(12994):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
10-03 15:54:51.784: WARN/System.err(12994):     at java.lang.Thread.run(Thread.java:1019)

可能的问题是什么? 有谁能帮我解决这个问题吗? 谢谢。


1
你为设备创建了密钥库吗?还是在使用使用 debug.keystore 创建的密钥? - Pratik
@pratik 我正在使用 debug.keystore。 - ekjyot
对于设备,您必须创建另一个密钥库并为地图生成新的密钥。这将适用于所有设备,而debug.keystore仅用于特定于机器的调试虚拟设备。 - Pratik
@Pratik,你能告诉我如何为地图生成不同的密钥库吗? - ekjyot
你需要使用发布密钥来签署你的应用程序,而不是使用默认的Android“debug.keystore”。如果你使用debug.keystore,则地图将对所有用户不可见,因此你需要使用发布密钥来完成。 - Venky
显示剩余3条评论
1个回答

7

您不能使用debug.keystore为进入市场的应用程序创建Google地图API密钥。如果您已经在市场上有该应用程序(或者确实有任何应用程序),那么您已经拥有应该使用的密钥库。以下是如何使用此密钥库获取Google Maps API密钥的步骤:

第1步:在命令行中导航到包含密钥库文件的目录:

cd <keystore-dir>

步骤2:列出您密钥库中的内容:

keytool -list -keystore <your-keystore-file>

第三步:在提示时输入密钥库的密码。Keytool现在将显示证书及其MD5列表。
第四步:将要用于签署应用程序的证书的MD5复制到您的复制/粘贴缓冲区中。
第五步:打开浏览器并导航至http://code.google.com/android/maps-api-signup.html - 如果您没有使用Android Market账户登录,则需要在生成API密钥之前进行登录。
第六步:将来自复制/粘贴缓冲区的MD5粘贴到标有“我的证书的MD5指纹”的文本框中,并选中“我已阅读并同意...”框。
第七步:单击“生成API密钥”。现在您将看到所需的API密钥。
第八步:将API密钥复制并粘贴到您的MapView组件的android:apiKey属性中。
如果您有多个MapView组件,则可以声明一个字符串资源:
<string name="production_api_key">thisIsMyKeyValue</string>

现在,您可以像引用任何其他字符串值一样,在android:apiKey属性中使用它:
android:apiKey="@string/production_api_key"

现在使用你在第4步中使用的证书将应用程序导出到APK文件中。
只要按照这个逐步指南,你就应该没问题——我刚刚开始使用以这种方式生成的地图API密钥。
需要注意的事项:
1. 使用密钥库文件的MD5 (md5 <my-keystore-file>),而不是证书的MD5。你需要的是证书的MD5。
2. 在生成API密钥时登录Google,但使用错误的帐户。你的地图API密钥和Android Market签名密钥必须属于同一个Google账户。

我遇到了相反的问题:尽管我设置了API密钥,但我无法使应用程序在调试模式下运行。 - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接