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安裝才能正常使用。
========================================