分为四步:密钥申请、开发包下载、环境配置、Hello地图


@1.密钥申请

申请网址 :http://lbsyun.baidu.com/apiconsole/key

android14app在后台无法启动activity_ide



前提:已经配置好应用程序的密钥  就是   xxx.jks,放在项目根目录下

包名在 app  下 build.gradle

发布版SHA1获取方式   : Android Studio 底部 Terminal的编辑器内输入指令 keytool -v -list -keystore xxx.jks

开发板SHA1获取方式   :window  运行 cmd    指令如下:  cd .android       keytool -v -list -keystore debug.keystore

android14app在后台无法启动activity_地图_02

生成百度密钥后的截图

android14app在后台无法启动activity_android_03




@2开发包下载

http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar

android14app在后台无法启动activity_地图_04



@3环境配置

1.引入包:

Eclipse:

第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;

第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。

通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:

1. 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;

2. Project -> clean-> clean all .



Android Studio

下载的开发包解压后 进入lib目录,截图如下

android14app在后台无法启动activity_android_05


Android Studio的截图

android14app在后台无法启动activity_程序开发_06


其中  .jar包放入 app下的 libs里   注意:使用 软件右侧的

android14app在后台无法启动activity_程序开发_07

进行引入,不要使用 add as library  

.so文件  则需要在main目录下创建 jniLibs文件夹,将.so文件全部放入这里


2.添加混淆:

集成地图SDK的应用,在打包混淆的时候,需要注意与地图SDK相关的方法不可被混淆。混淆方法如下:


-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}    
-dontwarn com.baidu.**


保证百度类不能被混淆,否则会出现网络不可用等运行时异常





3.清单文件配置

添加密钥:

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
</application>



权限配置:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />



@4 Hello地图


在布局xml文件中添加地图控件;


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


在应用程序创建时初始化 SDK引用的Context 全局变量:


public class MainActivity extends Activity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
    }  
}


注意:在SDK各功能组件使用之前都需要调用

SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中

创建地图Activity,管理地图生命周期;


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.activity_main);  
        //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);  
    }  
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
        mMapView.onDestroy();  
    }  
    @Override  
    protected void onResume() {  
        super.onResume();  
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
        mMapView.onResume();  
        }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
        mMapView.onPause();  
        }  
    }