天天看點

利用百度地圖SDK進行開發時申請key和基本配置以及一個小問題

如果用百度地圖SDK進行地圖,定位,導航等相關開發時,需要如下步驟:

1、進入百度地圖API官網:http://developer.baidu.com/map/index.php?title=首頁,申請key,具體方法詳見官網方法;

2、下載下傳你需要的地圖,定位,導航SDK和Sample;

3、建立android project,

利用百度地圖SDK進行開發時申請key和基本配置以及一個小問題

把libBaiduMapSDK_v_x_x_x.so檔案copy進libs中的armeabi檔案夾中;把baidumapapi_v_x_x_x.jar放進libs下。

4、編輯AndroidManifest.xml檔案:

package名字就是你申請key時用的包名;

利用百度地圖SDK進行開發時申請key和基本配置以及一個小問題

增加使用者權限設定:

利用百度地圖SDK進行開發時申請key和基本配置以及一個小問題

application中添加meta-data,就是放申請key的地方:

利用百度地圖SDK進行開發時申請key和基本配置以及一個小問題

5、編輯layout檔案:即添加com.baidu.mapapi.MapView:

<span style="font-family:SimSun;font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.baidumap.demo.MainActivity" >

    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        />

</RelativeLayout></span>
           

6、編輯主activity檔案:

<span style="font-family:SimSun;font-size:14px;">public class MainActivity extends Activity {

	MapView mMapView = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//在使用SDK各元件之前初始化context資訊,傳入ApplicationContext
		//注意該方法要在setContentView方法之前實作
		SDKInitializer.initialize(getApplicationContext());		
		setContentView(R.layout.main);
		mMapView = (MapView) findViewById(R.id.bmapView);
	}
	
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		mMapView.onResume();
	}
	
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		mMapView.onPause();
	}
	
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		mMapView.onDestroy();
	}</span>
           

注意的地方已經在代碼段中進行了注釋!

7、一切完成,貌似可以運作了!并!不!是!

利用百度地圖SDK進行開發時申請key和基本配置以及一個小問題

報錯了!有木有!

8、解決辦法:

利用百度地圖SDK進行開發時申請key和基本配置以及一個小問題

添加armeabi-v7a檔案夾,copy上述的libBaiduMapSDK_v_x_x_x.so檔案;這下程式可以運作!

9、這是為什麼呢?

android project中有一個 libs檔案夾,此檔案夾下包含了armeabi 和armeabi-v7a兩個檔案夾,我們的c代碼編譯成的本地庫(各種.so)就會放在這兩個檔案夾其中的一個。那armeabi-v7a 與 armeabi有什麼差別,都是什麼意思呢?

    armeabi和armeabi-v7a是表示cpu的類型,我們知道一般的手機或平闆都是用arm的cpu(mips的就悲催的被忽視了),不同的cpu的特性不一樣,armeabi就是針對普通的或舊的arm cpu,armeabi-v7a是針對有浮點運算或進階擴充功能的arm cpu。

當然,你同樣可以在android.mk裡可配置以下宏:

TARGET_CPU_API := armeabi

APP_ABI := armeabi

 當你編譯時出現一些連結動态庫的undefine錯誤,或你的apk運作時出現裝載.so動态庫錯誤時,這個時候你就要想想這個cpu類型的配置是否有誤