参考:
http://developer.android.com/google/play-services/maps.html
1. Retrieve information about yourapplication's certificate.
2. Register a project in the GoogleAPIs Console and add the Maps API as a service for the project.
3. Once you have a project set up,you can request one or more keys.
4. Finally, you can add your key toyour application and begin development.
# Displaying certificate information
# Displaying the release certificatefingerprint
C:\Users\Administrator>keytool-list -keystore C:\Users\Administrator\.android\d
ebug.keystore
输入密钥库口令:(默认android)
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
androiddebugkey, 2013-7-11,PrivateKeyEntry,
证书指纹 (SHA1):5A:74:99:61:5B:04:A7:26:EF:04:3E:30:84:DA:80:89:5D:E9:45:E5
*******************************************
*******************************************
C:\Users\Administrator>keytool -list -keystoreC:\Users\Administrator\.android\d
ebug.keystore -v
输入密钥库口令:(默认android)
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: androiddebugkey
创建日期: 2013-7-11
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Android Debug, O=Android, C=US
发布者: CN=Android Debug, O=Android, C=US
序列号: 29d3c9ba
有效期开始日期: Thu Jul 11 12:31:29 CST 2013,截止日期: Sat Jul 04 12:31:29 CST
2043
证书指纹:
MD5:FF:C7:E7:E0:16:B3:11:8E:68:A7:32:85:B8:54:65:E4
SHA1:5A:74:99:61:5B:04:A7:26:EF:04:3E:30:84:DA:80:89:5D:E9:45:E5
SHA256:3D:36:88:58:6B:52:4E:BC:B4:28:18:22:EC:60:80:25:1E:97:2E:0E:FC:
4F:A6:97:53:5A:2C:EF:B9:BD:1F:B9
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 6C A0 BD 2D C6 32 53 4D DD B9 B2 4B CC 63 B8 14 l..-.2SM...K.c..
0010: 3D CB 8F 1A =...
]
]
*******************************************
*******************************************
或者:
C:\Users\Administrator>keytool-list -v -keystore C:\Users\Administrator\.androi
d\debug.keystore -aliasandroiddebugkey
输入密钥库口令:
别名: androiddebugkey
创建日期: 2013-7-11
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Android Debug, O=Android, C=US
发布者: CN=Android Debug, O=Android, C=US
序列号: 29d3c9ba
有效期开始日期: Thu Jul 11 12:31:29 CST 2013,截止日期: Sat Jul 04 12:31:29 CST
2043
证书指纹:
MD5: FF:C7:E7:E0:16:B3:11:8E:68:A7:32:85:B8:54:65:E4
SHA1: 5A:74:99:61:5B:04:A7:26:EF:04:3E:30:84:DA:80:89:5D:E9:45:E5
SHA256: 3D:36:88:58:6B:52:4E:BC:B4:28:18:22:EC:60:80:25:1E:97:2E:0E:FC:
4F:A6:97:53:5A:2C:EF:B9:BD:1F:B9
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 6C A0 BD 2D C6 32 53 4D DD B9 B2 4B CC 63 B8 14 l..-.2SM...K.c..
0010: 3D CB 8F 1A =...
]
]
方法二:
eclipse->Window->Preferences->Android->Build->SHA1 fingerprint:
#Creating an API Project
https://code.google.com/apis/console/
登录进去:
创建一个项目,修改项目名,打开 “Google Maps Android API v2”开关:
# Obtaining an API Key
#Adding the API Key to your application
<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"/> <!-- The following two permissions are not required to use Google Maps Android API v2, but are recommended. --> <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="API_KEY" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
# Add a Map (for test)
https://developers.google.com/maps/documentation/android/intro#sample_code
Sample Code
Sample code isbundled with the Google Play services SDK.First you must add Google Play services as an Android library project asfollows:
1. Select File > Import > Android > ExistingAndroid Code Into Workspace and click Next.
2. Select Browse...,enter <android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib
, and click Finish.
Once you have installed Google Play services, you can viewthe sample code, or run the sample app locally. The sample app is an Eclipseproject that you can run on your device as follows:
1. Select File > Import > Android > ExistingAndroid Code Into Workspace and click Next.
2. Select Browse...,enter <android-sdk-folder>/extras/google/google_play_services/samples/maps
, and click Finish.
3. Select Project > Properties,select Java Build Path, and navigate to Libraries.
4. Select Add ExternalJars, include the following jar files, and click OK:+ <android-sdk-folder>/extras/android/compatibility/v4/android-support-v4.jar
5. Add your own Google Maps Android API key.
6. Select Run > Run totest the sample app.
Note:
1. com.google.android.gms.maps.MapFragment --> com.google.android.gms.maps.SupportMapFragment
2.会出现:你必须更新Google Play 服务才能运行此应用.照做,在真机上更新(下载)Google Play服务。
效果:
Note:
1. 经多次试验表明每新生成的API key 不是立即有效,需要过一会才会儿(时间不定)有效,否则会报错,如下:
08-22 17:05:27.323: E/System(22026): Uncaught exception thrown by finalizer
08-22 17:05:27.329: E/System(22026): java.io.IOException: close failed: EIO (I/O error)
08-22 17:05:27.329: E/System(22026): at libcore.io.IoUtils.close(IoUtils.java:41)
08-22 17:05:27.329: E/System(22026): at java.io.RandomAccessFile.close(RandomAccessFile.java:166)
08-22 17:05:27.329: E/System(22026): at java.io.RandomAccessFile.finalize(RandomAccessFile.java:175)
08-22 17:05:27.329: E/System(22026): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:186)
08-22 17:05:27.329: E/System(22026): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:169)
08-22 17:05:27.329: E/System(22026): at java.lang.Thread.run(Thread.java:856)
08-22 17:05:27.329: E/System(22026): Caused by: libcore.io.ErrnoException: close failed: EIO (I/O error)
08-22 17:05:27.329: E/System(22026): at libcore.io.Posix.close(Native Method)
08-22 17:05:27.329: E/System(22026): at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
08-22 17:05:27.329: E/System(22026): at libcore.io.IoUtils.close(IoUtils.java:38)
08-22 17:05:27.329: E/System(22026): ... 5 more
08-22 17:05:27.329: E/System(22026): Uncaught exception thrown by finalizer
08-22 17:05:27.333: E/System(22026): java.io.IOException: close failed: EIO (I/O error)
08-22 17:05:27.333: E/System(22026): at libcore.io.IoUtils.close(IoUtils.java:41)
08-22 17:05:27.333: E/System(22026): at java.io.RandomAccessFile.close(RandomAccessFile.java:166)
08-22 17:05:27.333: E/System(22026): at java.io.RandomAccessFile.finalize(RandomAccessFile.java:175)
08-22 17:05:27.333: E/System(22026): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:186)
08-22 17:05:27.333: E/System(22026): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:169)
08-22 17:05:27.333: E/System(22026): at java.lang.Thread.run(Thread.java:856)
08-22 17:05:27.333: E/System(22026): Caused by: libcore.io.ErrnoException: close failed: EIO (I/O error)
08-22 17:05:27.333: E/System(22026): at libcore.io.Posix.close(Native Method)
08-22 17:05:27.333: E/System(22026): at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
08-22 17:05:27.333: E/System(22026): at libcore.io.IoUtils.close(IoUtils.java:38)
08-22 17:05:27.333: E/System(22026): ... 5 more
08-22 17:05:44.323: E/Google Maps Android API(22026): Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).