因為Google Maps的API版本更新,之前的一些教程都是關於舊版本V1的,雖然Google說繼續提供服務,但是不再提供API Key的申請。
而新的V2版本貌似改動還挺大。也沒搜到國內有什麼系統介紹的博客文章之類的(書肯定是來不及那麼新了)。
斷斷續續折騰了大概半個月,因為對Android也不是特別熟悉,所以碰到這樣那樣的問題。
終於在昨天看見模擬器上跑的地圖了。太感人了。
下面就主要說說要成功做成這一件事的流程吧。
因為肯定有時效性,所以打上一個時間戳記:版本更新事件發生在2012年12月,而這篇博文目前的時間是2013年1月1日。
背景
一些相關的連結:
Google Maps Android API V1的介紹:
HTTPs://developers.google.com/maps/documentation/android/v1/mapkey?hl=zh-CN
Google Maps Android API v2的初步介紹:
HTTPs://developers.google.com/maps/documentation/android/
Introduction
HTTPs://developers.google.com/maps/documentation/android/intro
Getting Started
(本部分參考HTTPs://developers.google.com/maps/documentation/android/start)
1.首先安裝Google Play services SDK
Google Maps Android API是作為這個SDK的一部分發行的。
這個安裝是通過Android SDK Manager進行,配置好之後的Eclipse上面應該有Android SDK Manager的圖示,一般的SDK版本安裝和更新都在這裡進行。
安裝和更新Extras下的Google Play services即可。
2.獲取API key
獲取Maps API key需要兩樣東西:應用的signing certificate和它的package name。
獲取這個key之後,把它加在應用程式的AndroidManifest.xml檔裡即可。
為應用獲取一個key還是需要好幾個步驟的,下面詳細說明:
獲取數位憑證(digital certificate)資訊
數位憑證有Debug和Release兩種,下面主要說Debug的。
要獲取一個叫做SHA-1 fingerprint的東西,作為數位憑證的一個簡短代表。
這個指紋(fingerprint)是通過一個雜湊演算法得到的字串,為了得到你的證書的SHA-1 fingerprint,首先要找到你的debug keystore 檔,檔案名叫debug.keystore。
預設情況下它和虛擬機器AVD存放在一起,win7下的路徑是:C:\Users\your_user_name\.android\,也可以通過Eclipse中的Windows > Prefs > Android > Build來查看這個路徑。
然後,在cmd命令列裡運行下列命令:
keytool -list -v -keystore "C:\Users\your_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android就顯示一大堆東西,其中就有證書指紋:
SHA1那一行就包含了證書的SHA-1 fingerprint,是二十段用冒號割開的數位段,每段是兩個十六進位的數。
在Google APIs Console上創建API Project
在Google APIs Console上創建專案,並且註冊Maps API。
用Gmail的帳戶登錄,如果是第一次的話,需要創建專案,預設情況會創建一個叫做API Project的專案。
點擊左邊的Services,會在中間看到很多的APIs和Services,找到Google Maps Android API v2,然後把它設置成on,需要接受一些服務條款。
獲得API Key
在左邊的導航條中選擇API Access。
在出來的頁面中選擇Create New Android Key...就可以生成key了:
然後在對話方塊中填入:SHA-1 指紋, 分號隔開,然後是應用的 package name.然後就會生成一個Key。
比如:
3.把API Key加入應用程式
首先,建立虛擬裝置AVD和應用程式。
關於AVD,官方文檔並沒詳細介紹,我後面會有說明。
建立好應用程式,注意包名應該和申請key時候的包名一致。
之後修改AndroidManifest.xml檔:
3.1.在元素中加入子標籤
4. AndroidManifest.xml中的其他具體設置
許可設置
同樣也是作為 的子項目。
首先佈局檔:
MainActivity.java package com.example.mapdemo; import android.app.Activity;import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 遇到的問題和解決的方法
程式編譯錯誤,顯示找不到一些類
如圖:
解決這個問題,首先需要把Google Play services的類庫載入進來:
在Eclipse裡面選擇:File > Import > Android > Existing Android Code Into Workspace然後點擊Next.
之後Browse..., 找到路徑下的/extras/google/google_play_services /libproject/google-play-services_lib, 然後選擇Finish。
第二步是添加對這個庫的引用:
在自己的專案上右鍵,選Properties,左邊選Android,然後在下面的Library裡面Add剛才的google-play-services_lib。
之後程式就應該能運行了。
接著你可能會碰到下面的問題:
程式運行成功,但是顯示This app won't run unless you update Google Play services.
如圖:
有傳言說V2不能在AVD上運行,可能Google還會對此問題進行更新。
經過搜索,這個問題已經在Stackoverflow上被討論過了,連結
所以看來在AVD上運行的問題已經被解決了。
解決的方法就是在AVD上安裝兩個包:vending.apk和gms.apk,(給一個網盤連結)
並且AVD就選擇普通的API 16就行,不需要是Google APIs。我選的是Android4.1 API16.
安裝時把那兩個包放在目前的目錄,用命令列安裝:
之後運行程式,就出地圖了:
沒有留言:
張貼留言