Google已經發布新的Google Map Android API v2,相關使用方法請參考新文章:Android學習_如何開始使用Google Maps Android API v2
-------------------------------------------------------------
要在Android內使用Google Map API需要先申請API key,而申請API key必須要有MD5 fingerprint,如果是使用模擬器來測試,就必須要以debug的MD5去申請key,詳細步驟請見"Android筆記_如何申請Google Map API Key(模擬器用)",但是如果想放到實體手機上,就必須要先建立"個人的keystore",再利用keytool取得MD5,最後進行API key的申請,詳細步驟如下:
一、建立個人的keystore
A. 開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 輸入keytool指令(keytool -genkey -v -keystore yourkeyname.keystore -alias yourkeyname -keyalg RSA -validity 10000)[參考Android SDK 開發範例大全3]
keystore:名稱
alias:別名
keyalg:演算法
validity:有效天數
輸入後,會有一系列的問題,需要注意的是過程中會輸入兩種密碼,網路上書上都推薦怕記不住就用一樣。
C. 完成後,keytool就會產生keystore的檔案在java的bin資料夾
二、有了個人的keystore後,就必須要取得該keystore的MD5
A. 還是一樣先開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 使用"既有keystore取得MD5的語法(keytool -list -v -keystore "絕對路徑"),鍵入語法後就必須要輸入剛剛建立時所設定的密碼。
C. 記著MD5。
三、至申請頁面Sign Up for the Android Maps API(網址:http://code.google.com/intl/zh-TW/android/maps-api-signup.html)
A. 貼上剛剛的MD5,並且按下[Generate API Key]
B. 接下來就會看到一個感謝您的畫面,上面有申請到的Android Maps API 金鑰
四、接下來把API key放到MapView的android:apiKey屬性。
五、因為我們是使用個人keystore產生的MD5去申請apiKey,所以在安裝程式到實機時,也變的有點不一樣,如果直接用Run As選我們的實體手機,會發現還是沒辦法正常顯示地圖;原因是我們並沒有"設定"這隻程式是屬於該keystore的,所以必須先利用匯出功能將個人簽章(keystore)註冊給這個專案。
A. 專案右鍵選擇Android Tools→Export Signed Application Package
B. 依照步驟可以匯出帶有簽章的apk檔案(過程中必須輸入最初設定的keystore密碼)
六、取得到帶有keystore的Apk檔案以後,可以利用adb將程式安裝到實際的手機上面。
A. 利用adb指令(adb install Name.apk) (相關語法)
如此,就可以將Google Map相關的android程式安裝到實體手機上面進行測試。
這篇有幫助到你了話,請留"YA~~~看到圖了"
請問一下,關於指令中的-keystore部分
回覆刪除我在網路上找到的資訊是說這個指定名字的keystore如果不存在會自動建立一個keystore檔案
但是我在輸入完所有問題之後都會出現FileNotFoundException
也就是說keystore檔並沒有建立成功,請問這要怎麼解決呢?
你可以先嘗試將keystore參數加上完整路徑,比如說:c:\ola.keystore應該就可以正常產生。
回覆刪除試過了,依然是存取被拒
回覆刪除我也試過把路徑指到別的磁碟機了
問題解決了,我將keytool設為以管理員身分執行便可以正常建立檔案了
回覆刪除謝謝您的幫忙
恭喜。沒有想到是權限問題。
回覆刪除謝謝!你的詳細解說.
回覆刪除YA~看到圖了= )
恭喜你呀 =)
回覆刪除作者已經移除這則留言。
回覆刪除順便請問一下 要如何從資料庫取得經緯度然後呈現在地圖上阿 有什麼固定的語法嘛?
回覆刪除我不太懂你所謂的"資料庫"取經緯度的意思是什麼,所以我猜測一下:
回覆刪除1. 意思是從伺服器:
使用http get/post來取,或寫一個WebService。
2. 意思是在手機上取得經緯度:
利用LocationManager去取得。
3. 意思是已經取得經緯度了,要秀上去:
利用overlay繪製。
我也是必須使用修改成以管理員身分執行之後 順利取得
回覆刪除可是命令提示字元卻是另開視窗 並且只閃爍一下就結束 看不清楚金鑰 請問要如何解決呢??
應該是用管理員身分執行"命令提示字元",然後在裡面輸入指令。
回覆刪除你會只閃一下,應該是直接去執行keystore才會這樣。
不好意思 我想請問一下
回覆刪除我已經申請個人API了(不是模擬器上使用的)
可是我在手機上面測試還是只顯示網格而已
請問這是什麼原因 :(
麻煩您了 !!
你先確認以下這些事情:
回覆刪除1. 是否是用建立的keystore產生MD5
2. 是否用上述的MD5去申請google map api key
3. 是否有將取得的google map api key寫在xml檔
4. 這個專案是否有用建立的keystore匯出成apk
5. 是否安裝這個apk
我覺得你應該某個地方有搞混,導致他不是讀到被授權的KEY。
感謝你!! 其實我犯了個錯誤
回覆刪除原來我們在申請個人API時有自己創一個Keystore在java jdk裡面
當我再匯出專案成apk檔時自己又再創一個keystore
正確的是要瀏覽開啟我們在java jdk裡面那個keystore
而不是自己創 這部分我不知道也做錯了
最後看到地圖了 !!!
感謝~
恭喜你呀 ^.^
回覆刪除請問一下 如果我到最後要發布到market上 那api key
回覆刪除要打什麼啊? 因為每台手機的API key都不同
那個API key不是一個手機用一個。
回覆刪除概念上是你用你『個人的keystore』去申請API key,所以google會知道這個API key的程式就是你所製作的,目的是他要類似控管有多少人在使用他放出來的google map api;而不是像你想的一個手機要用一個API key。
所以這個問題是不存在的。
YA~~~看到圖了
回覆刪除恭喜你呀 :D
回覆刪除請問執行cmd 語法都跟上面一樣
回覆刪除可是我會出現
Unrecognized option : -genkey
Could not create the Java virtual machine.
不知到大大是否知道是哪裡出了問題><
"Could not create the Java virtual machine"
回覆刪除這個錯誤我沒有碰過耶,google以後看起來是記憶體配置的問題。
但是實際要怎麼解決我沒有測試過,你可能還要根據那些文章試試看。
請問我產生出來的認證指紋不是MD5而是SHA1該怎麼辦 我去申請API時網頁有點不一樣我輸入完SHA1的認證指紋後網頁都是?????? 請問這樣算申請成功嗎?
回覆刪除要申請google map api的使用就要用MD5。
回覆刪除我不知道什麼樣的API要使用SHA1來認證,但是你都可以利用你產生的keystore去得到MD5來申請google map api,同時也可以利用該keystore去得到別的憑證去申請其他的API(如果你的APP需要同時使用兩個需要認證的API)
看你寄的附圖,從keystore的產生流程就已經不同了,而且你在得到憑證時是使用debug.keystore,所以應該還是要先確認你要做的事情。
如果單單使用google map api照本文的語法輸入即可。
hello
回覆刪除我模擬器&實機,地圖都跑不出來啊.......網格狀
1.
在模擬器上測試時,有照著步驟先去看eclipse build keystore的路徑,
再用CMD 取MD5 去申請apikey......................
(另外自己有懷疑過是 keystore過期,
但已經把它砍掉在新建一次,還是同樣結果)
Log cat :Couldn't get connection factory client
2.實機測試
在第一次用eclipse匯出時選取新建一個keystore,
再去查詢這個keystore的MD5,以該MD5申請apikey
把xml檔的apikey改掉後再匯出一次,但這次選使用現有的keystore
把滙出的apk安裝在實機上還是網格狀的,地圖沒有出來
到底是哪裡被鬼打牆了(嗚~~)
系統平台:win 7 64bit & eclipse Indigo
看起來整個流程應該是沒有錯,那可能就需要重頭確認起:
回覆刪除我覺得你有幾個地方可以測一下,
1. 使用java的keytool指令(C:\Program Files\Java\jre6\bin),產生keystore。
2. 確認是用產生出來的keystore取得MD5
3. 確認是用上述MD5取得google api key
4. 確認該api key有置換MapView的key
5. 確認匯出apk檔時,是使用申請的keystore來匯出。
6. 確認網路連線。
我沒有在匯出時使用過"選取新建一個keystore",不確定這種方式所得到的keystore是否可以正確使用,所以我認為你可以照著本篇第一個步驟取得keystore後,再做一次流程。
我的感覺是你應該有某一個步驟沒有對應到keystore與api key。
good luck
ola 大大您好
回覆刪除我想請問是否能在goole地圖上
做一個地圖擷取的功能
比如我做好了可以路線規劃
是否能在我的程式上加入畫面擷取
存到記憶卡
謝謝
利用 MapView.setDrawingCacheEnabled(true);
回覆刪除Bitmap mBitmap = Bitmap.createBitmap(MapView.getDrawingCache());
可以取得地圖的MapView的Bitmap,再轉成你需要的格式。
感謝Q_Q
回覆刪除「ola的家 提到...
回覆刪除你先確認以下這些事情:
1. 是否是用建立的keystore產生MD5
2. 是否用上述的MD5去申請google map api key
3. 是否有將取得的google map api key寫在xml檔
4. 這個專案是否有用建立的keystore匯出成apk
5. 是否安裝這個apk」
有用!YA~看到圖囉~感謝!!
您好!
回覆刪除小弟我在取得憑證指紋時是出現SHA1
不知可否讓他直接出現MD5
感謝!!
增加-v的參數,
回覆刪除將keytool -list -keystore C:\...,
改為keytool -list -v -keystore C:\...。
原來如此~
回覆刪除我瞭解了!
感謝您!!
我在第三點
回覆刪除三、至申請頁面Sign Up for the Android Maps API網址上
貼到GOOGLE瀏覽器,網頁上面自己就跑出MD5認證的那串XX:XX:XX 而我用那串竟然可以申請到的Android Maps API 金鑰
而我用我自己照步驟打指令產生的MD5不能用但是他網頁上面的填進去可以申請到 但是這樣因該是錯誤的吧!?!?
而第四步驟之後我就不知該如何操作
卡在
四、接下來把API key放到MapView的android:apiKey屬性。
(其實後面都好模糊~"~)
不知道可不可以聯絡你.
我看不太懂你的描述,所以你有正確申請到api key嗎?
回覆刪除第四點就是layout(你的可能叫做main.xml)裡面的MapView標籤會有android:apiKey屬性,把剛剛申請到的key填在那邊。
第五點就是平常我們會直接按run把專案安裝到手機裡面,但這邊要先匯出,再用adb安裝到手機內。
可以搂 我裝vm在灌就可以了 還是謝謝瞜~
回覆刪除請問一下
回覆刪除我在Export Android Application
最後
Destination APK file 的路徑選擇了桌面上去存放~
按下Finish之後出現了一個Export Wizard的警告:
failed to create key: cannot run program "C\jre6\bin\keytool.exe": CreateProcess error = 740, -n"D一串亂碼
我該怎麼辦呢
這個錯誤我沒有遇過,但是我猜應該是權限的問題,"可能"你在執行時需要以"以系統管理員身分執行"這個來開啟cmd與eclipse。
回覆刪除你好,我也發生了看不到地圖的情況。我目前已經利用MD5取得了API金鑰,也將金鑰寫入apiKey,但還是無法正常看到地圖,求救呀~~~感謝
回覆刪除你的問題太籠統了,你可能要先從上面留言的確認順序,逐步確認後才可能抓到原因。
回覆刪除請問為什麼我的驗證不是MD5
回覆刪除是SHA1?
回覆刪除增加-v的參數,
將keytool -list -keystore C:\...,
改為keytool -list -v -keystore C:\...。
上面留言有提到。
YA~~~看到圖了
回覆刪除這個專案是否有用建立的keystore匯出成apk
回覆刪除一定要用這方法?? 有方法可以直接用 RUN AS 去跑嗎
我沒有查到除了該方法的其他安裝方式。
回覆刪除YA~~~看到圖了 寫的很詳細 謝謝囉!!!
回覆刪除YA~~~看到圖了!!成功上架了!!3Q
回覆刪除恭喜 :D
回覆刪除請問大大
回覆刪除為了產生key hash所打進cmd的命令語句
我已經做了
可是都會有"找不到msys-crypto-0.9.8.dll,所以無法啟動"
從openssl.exe發出的警告訊息
我不知道怎麼辦耶 有上網找卻找不到這個東西
才疏學淺的問是說一定要key hash嗎??
對不起大大 我發錯地方
回覆刪除是從大大的"Android學習_使用facebook sdk_Part1準備參考"
然後有問題的 相當抱歉!!
我找到缺失的檔案了
回覆刪除說起來有點丟臉
不好意思打擾大大
有解決最重要 :D
回覆刪除YA~~~看到圖了, 謝謝
回覆刪除恭喜你呀
回覆刪除YA~~~看到圖了
回覆刪除恭喜你呀,看到圖的瞬間真的很讓人興奮。 :D
回覆刪除可以請問一下嗎??
回覆刪除小弟已經try過很多次,依然只出現網格
不知道是發生甚麼悲劇了
可以幫忙解答一下嗎??
謝謝
只看到網格的原因可能有很多,最可能的還是取得金鑰的MD5跟最後匯出apk所使用的keystore為不同組。或者,網路有問題。只有這樣的描述很難判斷是什麼原因。
回覆刪除不好意思 第5個步驟最後面 要指定目標的APK File 是要指定哪個? 自己創的keystore?
回覆刪除第五個步驟就是利用Export Signed Application Package功能,匯出帶有簽章(keystore)的apk檔案。
回覆刪除流程:
1. 點擊Export Signed Application Package
2. 選擇要匯出的專案
3. 選擇步驟一製作的keystore,並輸入密碼。
4. 輸入主密碼。
5. 完成,得到apk檔。
大大 為啥安裝到手機裡面 手機的應用程式裡找不到 可是在管理應用程式那邊 明明就看到已經放入手機了...
回覆刪除是會安裝在手機的哪個地方呢?
這個問題我沒有發生過耶。
回覆刪除謝謝你 我剛剛看到圖片了^^
回覆刪除因為我們要報名比賽
剛剛正煩惱要怎麼解決
^^
YA~~~
恭喜你們呀! :D
回覆刪除請問我在 XML裡面貼上 網頁所給的
回覆刪除但是XML那邊卻是錯誤ㄟ~
所謂的錯誤是?不太懂這個問題。
回覆刪除YA!!!~看到圖了,太感謝你了,原來是沒有執行Export Signed Application Package這個步驟,難怪在手機上面模擬也沒有辦法顯示出完整地圖
回覆刪除謝謝作者囉 :D
恭喜你囉~~~~ :D
回覆刪除YA~~~看到圖了
回覆刪除原來實機上要另外用adb安裝授權
謝謝大大分享:)
我想請問一下
回覆刪除為什麼我照著上面打
為什麼會出現以下錯誤
"keytool 錯誤:java.io.FileNotFoundException:yku.keystore(存取被拒)
java.io.FileNotFoundException:yku.keystore(存取被拒)
at java.io.FileOutputScream.open(Native Method)
at java.io.FileOutputScream. (FileOutputScream.java:194)
at java.io.FileOutputScream. (FileOutputScream.java:84)
at sun Security.tools.KeyTool.doCommands(KeyTool.java:902)
at sun Security.tools.KeyTool.run(KeyTool.java:172)
at sun Security.tools.KeyTool.main(KeyTool.java:166)
謝謝
右鍵以管理原身份執行應該就可以了。
回覆刪除APK放左手機看不到,但在模擬器可以看到,求解決方法
回覆刪除謝謝,剛好幫我複習一下。
回覆刪除大大 請問一下
回覆刪除模擬器上有看到地圖
手機上卻看不到 是因為手機要用adb的方式安裝adk嗎
這一個問題有很多可能,但最可能的是你沒有使用對應的keystore匯出成apk,再進行安裝。
回覆刪除ola版大 我做完以上六個步驟後 最後在實機的結果是它說"抱歉! googlemap 停止運作"
回覆刪除而且我用eclipse 安裝到手機上時出現了以下警告:
Re-installation failed due to different application signatures.
You must perform a full uninstall of the application. WARNING: This will remove the application data!
Please execute 'adb uninstall com.example.googlemap' in a shell.
Launch canceled!
我也都有爬文 那五點基本上沒有做錯啊
基本上個人API都有設定 (我有整理2組金鑰 一組是手機的個人API 一組是模擬器的API
keystore都是使用自己建立的 不是本身的debug (轉成apk也都用自建的keystore
也有將取得的google map api key寫在xml檔 (MapView.....
adb安裝apk檔案使用DOS 都是成功的啊 (那篇adb安裝apk 我找到了tool的資料夾了!!謝謝
不知道這樣敘述 ola大可不可以替我解惑 @@ 拜託了
作者已經移除這則留言。
回覆刪除上面的問題是com.example.googlemap出現衝突,所以移除com.example.googlemap的程式後,再安裝一次即可。
回覆刪除無法執行是僅出現網格嗎? 如果是,即代表key沒有對應上,或是沒有網路。
移除com.example.googlemap的程式是啥麼意思?
回覆刪除事在DOS裡 打 adb uninstall com.xxx.xgx 嘛?
可是我剛剛打都是失敗ㄟ (有執行但結果失敗
我的無法執行是連網格的都沒有 無法打開地圖APP
是不是eclipse裡的程式要再打? 我只有將申請下來的Mapview 貼上
就是你手機內已經有一個com.example.googlemap的程式,而重新安裝時出現錯誤,所以先移除手機內的程式,再重新安裝。
回覆刪除無法打開App,那應該是錯在java code的部分,要有錯誤碼才能知道是甚麼原因。(猜測出錯的地方應該跟google map沒關係)
喔喔 刪除好像再重跑就不會執行錯誤了
回覆刪除但我有個問題:
我利用adb安裝apk檔案時 跑完後 app就出現在我的手機
所以我再用eclipse執行時 就出現剛剛的錯誤
那我刪掉APP 直接用eclipse執行 那我的APK有裝到手機了嗎?
關於程式碼 我有查書 我有把main.xml寫好
但java檔不知怎麼改 0.0
ola大 我程式碼已經OK了 現在跑模擬器 地圖都能顯示
回覆刪除但手機還是不行
問題還是如上: 再用adb 裝apk檔時 裝好後手機就會跑出map的APP
所以導致會有2個檔 使eclipse執行時錯誤
但刪掉 直接執行eclipse APP只會出現網格
到底要是哪個環節出錯了??
又是我哈哈 不過這次都看到圖了
回覆刪除原來APK檔直接丟入手機 再用eclipse安裝 就OK了
好像不一定要用DOS安裝
最後還是感謝OLA大的幫助!!!!
我看到圖了~~!!!!!!!!!!!!!!!!!!!
恭喜呀 :D
回覆刪除您好,我想問個問題,我好像有看到有Google Map API K第三版出來,說是不用 KEY了 ,請問第三版要怎麼寫才能用上述功能? 3q
回覆刪除你說的第三版應該是指JS版本,與我使用的Google Maps Android API v2不同,當然你也可以藉由webview來接取js版本的google map,但是效果將會比較差一點,就看自己的需求。
回覆刪除是的,大大,是我搞錯了,
回覆刪除因為我正在學習 android 的程式,但 看了很多教學,這幾天改了好多次,也申請了 KEY, 但還是都只出現網格,沒有地圖出現,我把那專案寄給您,幫我看看好嗎?
謝謝!
我猜測你的書應該是google map第一版的方式,目前第一版已經不支援了,你應該參考:http://wangshifuola.blogspot.tw/2013/01/androidgoogle-maps-android-api-v2.html這篇文章。
回覆刪除另外如果只出現網格,代表程式碼沒有錯誤,是你申請的key與程式無法對應,你必須檢視自己申請的流程與對應哪裡出了錯。
我建議你直接以上述那篇v2的文章重新自己開一個新專案,以最少的程式碼來測試。
還是不行,改了之後 連 Location 都無法取得
回覆刪除如果程式碼沒有錯誤,怎麼 main.xml 中也有要輸入 android:apiKey=""
你有看過,我給的兩個範例程式嗎?
真是不好意思,我目前時間不允許去測試你的專案,我是就你的描述給意見。
回覆刪除因為你提到有出現網格,在我以往的經驗裡出現網格但是沒有地圖,表示keystore沒有對應到google map的key。
你所說android:apiKey的屬性,在v1版的google的確是要放到MapView的tag當中,但是目前已經不再支援v1版了。
所以目前正確的做法就像我上一個回應,你應該"重新"開一個新專案,依照
http://wangshifuola.blogspot.tw/2013/01/androidgoogle-maps-android-api-v2.html這篇的方式,以v2版本來做,之後不管是實機測試或是上架才不會有問題。
今天測試了一個晚上,還是不能顯示畫面
回覆刪除只是想再問,如果是KEY有問題,在DDMS 裡面看的到嗎?
如果可以看到,會是如何的顯示呢?
如果有時再回覆吧! 謝謝!
測試一個晚上!找到這邊,終於看到地圖了! ya~~~
回覆刪除樓上這位很有趣,匿名還打這樣的話語,有趣!
回覆刪除還有版大沒時間就不用回覆了,我已經用 V3版在不用 KEY 的情況下做出來了! 你這裡的資訊,是舊的,必須要更改了!
恭喜。 :D
回覆刪除恭喜你解決了,我也終於搞定一個難關。
回覆刪除但是你的留言可能會造成後面讀到的人誤解android出了Google Maps Android API v3,以下給搞不清楚v2、v3版本的人參考。
----------------------------------
如果以Android來說,可以使用的google map api有兩種,一種是for android的(目前發展到第二版),另一種是for javascript(目前發展到第三版)。
這篇文章是Google Maps Android API第一版的開發方式,而現在最新版本為Google Maps Android API v2(官方網站:https://developers.google.com/maps/documentation/android/),不管是第一版或是第二版都需要產出keystore來跟key相連接。(第二版的開發方式:http://wangshifuola.blogspot.tw/2013/01/androidgoogle-maps-android-api-v2.html)
而javascript在第二版的時候還是需要申請key,但到了第三版則開發成不需要key就可以直接使用,雖然一般都是在網頁上使用,但在android開發裡面也有另一種變通的方法,就是利用webview來包住javascript開發的網頁程式,達到呈現地圖的目的。
哪一種開發模式比較好,就要看自己的需求,開發方式、效能或是操作感覺都不太一樣,這可能要自己感受比較準確。
Google Maps JavaScript API 第三版官方網頁:https://developers.google.com/maps/documentation/javascript/?hl=zh-tw
Google Maps Android API v2官方網頁:https://developers.google.com/maps/documentation/android/
寫這類文章,建議把整個範例PO出來說 並不要遺漏任何地方,不然只是讓要學習 Android程式 的人誤解和摸不著方向,浪費時間,謝謝!
回覆刪除ola 大大你好 我按照你的方法去申請APIkey,將其放入xml檔案裡
回覆刪除也是出現網格地圖。請問該怎麼處裡?
還有現在API申請的網站已經改成用SHA1申請了。
是否與大大您用MD5申請要差別??
請參考:http://wangshifuola.blogspot.tw/2013/01/androidgoogle-maps-android-api-v2.html
回覆刪除我會出現keytool 錯誤:java.io.filenotfoundexception:myname.keystore(存取被拒)...
回覆刪除這是什麼問題??
應該是右鍵以管理原身份執行就可以了。
回覆刪除不好意思我先要問我都有按您的方法去做,但我想問v2現在是不是已經停用,改用v3方式網頁顯示,我用v2執行只有出現google字樣跟黃黃的背景,地圖還是沒有載入,這是為什麼?
回覆刪除YA~~~看到圖了!!!
回覆刪除大大真的是我的再生父母!!!