前一陣子想要測試一些Google Map的東西,才發現他默默的在2012年12月3日推出了Google Maps Android API v2(
官方資料),而原本申請key與使用的方式變的不太一樣。
要讓手機正確出現Google map需要下列步驟:
1. 建立個人的keystore。
2. 由個人的keystore查詢SHA1碼。
3. 利用SHA1碼至
Google apis網站申請key。
4. 於eclipse安裝Google Play services。
5. 於要使用Google Map的專案加入google-play-services_lib的Library。
6. 於專案的AndroidManifest與layout.mal加入需要的設定。
7. 利用第一步驟的keystore匯出專案為apk檔案。
8. 以adb安裝上述apk檔案。
詳細步驟:
1. 建立個人的keystore。
A. 開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 輸入keytool指令(keytool -genkey -v -keystore yourkeyname.keystore -alias yourkeyname -keyalg RSA -keysize 2048 -validity 10000)
輸入後,會有一系列的問題,需要注意的是過程中會輸入兩種密碼,網路上書上都推薦怕記不住就用一樣。
2. 由個人的keystore查詢SHA1碼。
A. 還是一樣先開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 使用"既有keystore取得SHA1的語法(keytool -list -v -keystore "C:\Program Files\Java\jre6\bin\yourkeyname.keystore"),鍵入語法後就必須要輸入剛剛建立時所設定的密碼。(語法中加上-v才會顯示SHA1碼)
3. 利用SHA1碼至Google apis網站申請key。
A. 連至申請網站https://code.google.com/apis/console/
B. 若是第一次使用按Create Project。
C. 選擇左邊列表的Services,並且將google Maps Android API v2調整成"on"。
D. 選擇左邊列表的API Access,並且點擊右下角的Create new Android key。
E. 輸入步驟二得到的SHA1與專案的Package名稱(中間以分號分隔),例:SHA1碼;tw.com.maptest。
F. 記住API key。
4. 於eclipse安裝Google Play services。
A. 進入Android SDK Mnanger(eclipse→windows→Android SDK Mnanger)。
B. 安裝Extras的Google Play services。
5. 於要使用Google Map的專案加入google-play-services_lib的Library。
A. 於eclipse→File→import,選擇Android下的Existing Android Code Into Workspace。
B. 由Browse選擇→[android-sdk-folder]/extras/google/google_play_services/libproject/google-play-services_lib
C. 於要使用Google Map的專案按右鍵,選擇Properties。於左側選單選擇Android,並於下方Library上述加入的專案google-play-services_lib。
6. 於專案的AndroidManifest與layout.xml加入需要的設定。
A. 打開AndroidManifest加入必須的設定。
於application標籤之上(注意下述程式碼必須置換yourpackagename成你的package名稱):
<permission android:name="yourpackagename.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="yourpackagename.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
於application標籤中加入(注意下述程式碼必須置換GoogleMapAPIKey成剛剛申請到的Key):
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="GoogleMapAPIKey"/>
於application標籤下加入:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
B. 打開layout.xml,將介面先改為較單純的內容,待測試OK後再更改為自己需要的介面。
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
C. java用最單純的內容先進行測試:
package yourpackageName;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
7. 利用第一步驟的keystore匯出專案為apk檔案。
A. 專案右鍵選擇Android Tools→Export Signed Application Package。
B. 依照步驟可以匯出帶有簽章的apk檔案(過程中必須輸入最初設定的keystore密碼)
8. 以adb安裝上述apk檔案。
A. 利用adb指令(adb install Name.apk)
最後,執行程式,確認手機有連上網路,迎接你的地圖吧。
這篇有幫助到你了話,請留"YA~~~看到圖了"
2013年3月22日由劉佺網友補充如何在不匯出專案的情況下,使用debug.keystore來進行實機測試:
以下為完整留言,感謝他的補充:
不過隨即發現不用匯出成apk這麼麻煩,如果用他預設的debug.keystore去產生api key,就可以直接從eclipse/Run As去選擇自己的裝置
預設的debug.keystore可以從Preferences \ Android \ Build \ Default debug keystore去查詢
步驟二的語法就會變成:keytool -list -v -keystore "C:\Users\使用者名稱\.android\debug.keystore"
預設的debug.keystore的預設密碼是:android;這樣去申請,DEBUG時測試起來就會比較快(非常多 XD),就不用每次都匯出成專案了
剛才測試的時候發現,申請完以後,如果要改成自己之前新建的keystore
1. 先查自定密碼的keystore的SHA1碼
2. 到Google的API Access分頁
3. 選擇右邊的Edit allowed Android apps...
4. 將前半的SHA1碼改掉,分號後面的專案名稱不動
結果API key也不會變動,匯出專案時就可以用自訂的密碼了
實際安裝起來Google Map也可以正常顯示
----------------------------------------------------------------