真的觉得很奇怪,网上所有的googlemap的key申请都是debug版本的,为什么大家用得这么舒坦呢?难道都没有在真机上面试过?
这是网上获取debug指纹的方式:
keytool -list -alias androiddebugkey -keystore (debug.keystore文件路径) -storepass android -keypass android
正式版的其实完全相同的,但首先要有自己的key,申请自己key最简单是用图像界面,网上的命令行方法out了……
1.右击已经打开的项目名称选择下面:
2.选择next
3.首次使用选择Create new store,Location你自己选,名称自己取,然后是第一次的密码(要记住,等一下有用)。
Location 需要选择你要生成的key文件:例如 my.keystore
4.Alias(别名)和刚刚location里面的名称一样(偷懒,谢谢),之后是第二个密码(也要记住),年限和名称,Next
这样,我们自己的key就生成了!我们可以用这个key生成自己的签名程序!
申请这个正式版googlemap key时我们用下面获取指纹:
keytool -list -keystore (你使用的key文件路径) -storepass (你这个key的第一个密码) -keypass (你这个key的第二个密码)
比如我的:
keytool -list -keystore F:\keystore\my.keystore -storepass ..... -keypass ........
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
..............
android 开发谷歌map 申请KEY
首先,我们要使用Java下的keytool工具,产生MD5密纹,这个是跟你的证书所关联的,在使用Google Map API时进行对证书校验。Keytool这个文件一般位于%JAVA_HOME%/bin目录下,如果是Linux系统,则位于$JAVA_HOME/bin下的,比如windows下在C:\programs\Java\jdk1.6.0_18\bin下。
在开发Android程序时,一般是在debug调试模式下开发的,这时SDK的build tools会自动使用debug模式下的证书对应用进行签名的,为了产生debug模式下证书的MD5密纹,我们必须找到debug模式下的keystore密钥库,在不同的操作系统中,keystore位于如下位置:
对于模拟器上的,默认的是debug.keystore存放位置可以在eclipse下window->preferences->android->build里查看
- Keystore name: "debug.keystore"
- Keystore password: "android"
- Key alias: "androiddebugkey"
- Key password: "android"
- CN: "CN=Android Debug,O=Android,C=US"
这是debug.keystore相关内容。
接下来,我们开始使用keytool工具产生md5密纹,命令行下输入如下语句:
%JAVA_HOME%/bin/keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android 现在我们就产生了debug模式下的MD5密纹了,要注意的是,你必须重新为生产环境下的应用重新生成一次MD5密纹,因为如果在不同的Android SDK或者不同的开发环境下,MD5密纹是不同的,否则换了环境的话Google Map将不会工作。
产生的MD5密纹的输出如下面:
androiddebugkey, Apr 2, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): 72:BF:25:C1:AF:4C:C1:2F:34:D9:B1:90:35:XX:XX:XX
接下来,我们要到Google Map API的主页去申请一个Map的key了,可以访问
http://code.google.com/android/maps-api-signup.html页面,在其中的MD5 fingerprint一栏中输入刚才生成的MD5密纹。输入后,点Generate API Key,之后会为我们产生Google Map API了,这个API是我们在程序中可以使用的。其中还给出了如何在android中使用该API的方法。
然后就按照网上的方法打开:
googlemap key申请地址
copy指纹粘进去,完美了……
然后建项目和建模拟器target那都需要选google api才可以的,然后main.xml里加入MapView,而主程序这样写
-
package com.
example
;
-
-
import android.os.Bundle;
-
-
import com.google.android.maps.MapActivity;
-
import com.google.android.maps.MapView;
-
-
public
class hello
extends MapActivity
{
-
/** Called when the activity is first created. */
-
@Override
-
public
void onCreate
(Bundle savedInstanceState
)
{
-
super.
onCreate
(savedInstanceState
)
;
-
setContentView
(R.
layout.
main
)
;
-
MapView mapView=
(MapView
)findViewById
(R.
id.
map_view
)
;
-
mapView.
setBuiltInZoomControls
(
true
)
;
-
}
-
-
@Override
-
protected
boolean isRouteDisplayed
(
)
{
-
// TODO Auto-generated method stub
-
return
false
;
-
}
-
}
可以看到需要继承MapActivity而不是Activity,然后加入了可以使地图放缩的命令
还有一点需要注意,就是程序调用了其他的api并且需要使用网络的权限所以需要在AndroidManifest.xml里进行注册
-
<?xml version="1.0" encoding="utf-8"?>
-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-
package=
"com.example"
-
android:versionCode=
"1"
-
android:versionName=
"1.0"
>
-
<uses-sdk android:minSdkVersion="8" />
-
-
<application android:icon="@drawable/icon" android:label="@string/app_name">
-
<activity android:name=".hello"
-
android:label=
"@string/app_name"
>
-
<intent-filter>
-
<action android:name="android.intent.action.MAIN" />
-
<category android:name="android.intent.category.LAUNCHER" />
-
</intent-filter>
-
</activity>
-
<uses-library android:name="com.google.android.maps" />
-
-
</application>
-
<uses-permission android:name="android.permission.INTERNET"/>
-
-
</manifest>
运行程序就可以显示出像本文章最上面那种图那样的地图了。
然后想进一步了解google map及相关api的可以查看这篇hello-mapview和官方的api文档