Google Maps API v2 android版本開發 國內手機不支援google play Service相關問題解決--圖文教程
google 地圖在國內的使用讓人很頭痛,麻煩得要死,真搞不明白google為什麼不能搞成跟百度地圖那樣讓人使用。
後註:最近刷機後重新安裝(預設root的)可以直接在市場上下載幾個apk安裝後使用google服務了。
google maps依賴於google play Service,而國內手機大部分都沒預裝google play Service,單獨安裝也安裝不了,要root後經過幾步安裝系統app才能使用。
v2版本的申請api key方式讓調試也變得複雜,開發的jar包不是用普通的匯入方式就可以的,還需要匯入工程,相對其他功能來說複雜了很多,網上搜尋了很多資料,自己測試出了很多問題後總算在手機上看到地圖了,這裡記錄一下,時間是2013-03-25.(以後可能現在可以的方法又不行了)。
把自己手機上最新的apk匯出來傳到部落格上共用了 google服務相關apk-20130325.zip
http://files.cnblogs.com/zdz8207/google%E6%9C%8D%E5%8A%A1%E7%9B%B8%E5%85%B3apk-20130325.zip
官方介紹地址
Google Maps Android API v2的初步介紹:
https://developers.google.com/maps/documentation/android/
Introduction
https://developers.google.com/maps/documentation/android/intro
===================================================
具體步驟:
一、下載 Google Play services SDK :開啟Android SDK Manager進行下載。
更新sdk內容,拉到最下面,下載會到你sdk目錄的extras目錄下,具體路徑跟你環境有關,如,滑鼠移動上去可以看到。
二、申請api key
1.擷取數位憑證的認證指紋,數位憑證(digital certificate)有Debug和Release兩種。
本地調試的debug keystore 檔案debug.keystore。
預設和虛擬機器AVD存放在一起,xxx\.android\,也可以通過Eclipse中的Windows>Preferences>Android中的Default debug keystore進行查看。
Release的是自己發布應用產生的keystore
在cmd命令列裡切換到你安裝的JDK的bin目錄中輸入下列命令(路徑替換成你自己的):
keytool -v -list -keystore E:\android\avd\.android\debug.keystore
debug.keystore預設密碼是android,自己的簽名檔案是你自己設定的密碼,跟發布時輸入的密碼一樣。
查看"認證指紋"中的SHA1中的內容,這個內容記下來,接下來會使用到.
如下:
2.建立Google Maps API Key
https://code.google.com/apis/console
需要先登入,首次使用會出現讓你建立API工程的頁面.
點擊Create project後會跳轉到services頁面,需要在這個頁面選擇你要使用的API.選擇Google Maps Android API v2.
跳轉到服務條款確認的頁面,接受後,在顯示的頁面中左邊列表選擇”API Access”,然後點擊Create new Android key... 按鈕.
在彈出的對話方塊中填寫SHA1認證指紋和程式的包命,中間用分號分隔(google內建的google map v2樣本程式的包命是com.example.mapdemo):
C6:3D:DB:7B:1C:07:FD:5A:53:E0:85:28:3D:D1:5F:FE:FF:8E:D1:38;com.example.mapdemo
點擊create按鈕後,就建立了一個新的API key:
Key for Android apps (with certificates)
API key:
AIzaSyDFGLwpvnJ33QxKvHPY7MxrhbNUX29J42Y
Android apps:
C6:3D:DB:7B:1C:07:FD:5A:53:E0:85:28:3D:D1:5F:FE:FF:8E:D1:38;com.example.mapdemo
Activated on: Mar 25, 2013 12:56 AM
上面產生的API key配置到AndroidManifest.xml
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDFGLwpvnJ33QxKvHPY7MxrhbNUX29J42Y"/>
再到Service裡面開啟api功能,尤其是android的api v2 哪項,否則無法使用申請的key
三、匯入工程
Eclipse中選擇 File > Import, Android > Existing Android Code into Workspace. (注意: 是 Android > Existing Android Code into Workspace, 不是General > Existing Projects into Workspace, 否則是無法匯入) ,拷貝到自己的工作目錄,注意:這個項目和maps項目必須在同一檔案夾或者工作空間才行,否則會出錯。
匯入<android-sdk-folder>/extras/google/google_play_services/samples/maps 注意:新版本eclipse不能先複製到workspace下再匯入了,否則會報錯。
Eclipse中選擇 File > Import, Android > Existing Android Code into Workspace,把此程式匯入到Eclipse中.(注意: 這裡是 Android > Existing Android Code into Workspace, 而不是General > Existing Projects into Workspace, 否則會出現大量錯誤.)
匯入後發現有大量錯誤,解決辦法
1.刪除res\layout下面的options_demo.xml multimap_demo.xml 刪除對應類,修改MainActivity。
2.建立libs檔案夾,匯入android-support-v4.jar
3.修改AndroidManifest.xml 把申請到的api key 填到裡面,
注意,你的包名必須和申請的一致才可以,修改了包名以後要重新申請,當然debug.keystore不一樣也要重新申請,就是說我這裡這個key你是用不了的
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDFGLwpvnJ33QxKvHPY7MxrhbNUX29J42Y"/>
4.把google-play-services.jar這個jar包匯入,在自己的項目上右鍵,選Properties,左邊選Android,然後在下面的Library裡面Add剛才的google-play-services_lib。
注意:一定要變成綠色打勾了以後才可以,當前情況下可以的,關閉後再進入有可能又變紅x了,原因應該是路徑的問題,上面說過了兩個項目必須在同一workspace裡面才可以。
另外,手機的google play必須更新到最新版本,否則第一次運行會提示要你先更新了才能使用。
本人的運行效果:
測試過程遇到了很多問題,可能不同環境,不同機型還會遇到其他問題,我遇到的問題要點都在上面說明了,下面是兩個報錯比較多的異常。
03-25 13:09:00.265: E/AndroidRuntime(16215): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
03-25 15:45:19.311: E/Google Maps Android API(10212): Failed to load map. Could not contact Google servers.
最後為了方便大家把自己手機上最新的apk匯出來傳到部落格上共用了 google服務相關apk-20130325.zip
把兩個匯入到workspace的項目代碼也發上來吧---由於key和環境不一樣,其他人匯入了也用不了的,只能做參考了。
google-play-services_lib.zip maps.zip
=========================================
收集的一些反饋資訊
博主,我虛擬機器跑的地圖是英文版的 看你跑出來是中午地名 這個哪裡控制 。 還有博主Release版的 發布後在手機上地圖跑出來了沒? 我建立的私人認證 然後用裡面的SHA1申請了API KEY 替換key後在手機上顯示的是一片空白 地圖顯示不出來 只有+-兩個標準 包名是匹配的 由於我是新手 第一次產生自個的私人密鑰 地圖始終顯示不出來 我懷疑是我的認證有問題 求助啊..
---------------------------------------------------------
地圖出來什麼版本跟手機或者虛擬機器設定的語言有關的,你把語言設定成中文,地圖就變成中文了,這個是google地圖自己做的事情。
Release版的和debug版的沒什麼差別的,就產生api key的SHA1不一樣。 可以用ADT外掛程式產生的私人認證然後匯出簽名。
Release版的認證你不能在eclipse裡面直接run的,直接run的是用debug的簽名的,Release版的需要Export出正式版apk安裝才能正常使用。
========================================