今天做了个百度地图的功能集成到自己的项目里面,下面和大家分享一下我的学习
首先打开百度地图的开放平台,这里提供一个打开的网址(http://lbsyun.baidu.com/)。
1.选择“开发-->Android开发-->Android定位SDK”
2.看到“开发指南”,按照上面的步骤进行就行,这里我要强调一点,当在cmd中输入“keytool -list -v -keystore debug.keystore”的时候,enter后会有
”输入密钥口令:”,这个时候要注意,密码就是“android”,不过输入的时候是不显示的,要注意不要输错!然后百度文档介绍的都是非常详细了。
3.,记住访问应用(AK),
4.具体的小demo我这里就不写了,如果需要的话,给你提供一个网址(http://blog.csdn.net/zxc514257857/article/details/72083693)可以下源码,觉得写的不错,
(提醒:在使用的时候集成到项目里面不会报错,但运行的时候就会包一大堆的警告或错误(Error:warning: Ignoring InnerClasses attribute for an anonymous inner class),也许项目安装成功了,但打开的时候显示不出地图,这个是因为你没有改清单文件里面的那个访问应用(AK),一定要重新生成自己的才行,具体怎么改请
接着看下面的叙述)
将百度地图集成到自己的已有项目中的步骤:
①回到百度地图开放平台下,点击“相关下载”,选择自己需要的下载就行,
全部下载下来也没必要,而且里面也包含有百度官方给的例子。
②将需要的jar包放到libs包下,在main包下(与java同级)创建jniLibs包,将,so文件放到这里。另外还要在
在build.gradle中配置SO的使用
sourceSets{ main{jniLibs.srcDir(['libs']) } }
③一定要添加红色的部分,还要注意添加的位置
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main);
④接下来就是对清单文件的处理了很多的添加权限
<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permissionandroid:name="android.permission.INTERNET" ></uses-permission><uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><uses-permissionandroid:name="android.permission.READ_LOGS"></uses-permission>
再添加下面红色部分
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="自己生成的访问应用(AK)" /> <activity android:name=".activity.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> <intent-filter> <action android:name="com.baidu.location.service_v2.9"/> </intent-filter> </service> </application>
(我在做集成的时候总是会出现(Error:warning: Ignoring InnerClasses attribute for an anonymous inner class)引起
的一大堆错误在网上看到了很多的解决方案:
方法一:
在工程的混淆配置文件proguard-rules.pro文件中添加方法二:debug证书的问题。我到C:\Users\xxx\.android\debug.keystore目录下,这个证书的时效不知道是多久,可以删掉试试
方法三:访问应用(AK)有问题,可以重新生成试试看
方法四:在主项目build.gradle里添加这句
defaultConfig {
multiDexEnabled true
}
方法五:可能是项目中有些包(指的是libs和jinLibs)被重复的引用了,找到相同的删除掉)应该差不多了!