刚开始学习使用百度地图的API,百度给出的开发文档还算可以,但是细节我自己没搞清楚,所以到头来还是折腾了好久,因此在这里记录一下。
这是开发文档:http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap
1、数字签名
百度地图API是需要数字签名的sha1作为安全码的。首先用jdk生成数字签名。这一步转自 http://my.oschina.net/victorHomePage/blog/109638
介绍如何生成keystore
cmd下:
进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件。
C:Program FilesJavajdk1.7.0_01in>
keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
-alias android.keystore 生成的keystore别名
-keyalg RSA 加密和数字签名的算法
-validity 1000 有效天数
这里的 JAVA SDK 1.5 和 1.6 都可以,找到自己的 JAVA 目录就可以了。
输入keystore密码:自己确定,输入密码时,没有显示,但已经输进去了!
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:victor
您的组织单位名称是什么?
[Unknown]:extc
您的组织名称是什么?
[Unknown]: extc
您所在的城市或区域名称是什么?
[Unknown]: DG
您所在的州或省份名称是什么?
[Unknown]: GD
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Mickle, OU=www.ioou.com, O=www.ioou.com, L=Shanghai, ST=Shanghai, C=CN 正确吗?
[否]: Y
输入<android.keystore>的主密码(如果和 keystore 密码相同,按回车):
如果没有错误则回去java的jdk 的bin目录查看是否多了一个叫做android.keystore的文件
2、百度地图API中包含了一些.so文件,接下来就是导入.so文件。
在根目录的appsrcmain下建立名为jniLibs的文件夹,将armeabi文件夹放入其中,Rebuild Project。
3、这些解决后,就是获取sha1啊,签名啊啥的,百度很多,不赘述。但是接下来遇到一个困难。很多签名方法都是直接生成apk了,这种方法非常不利于真机调试。真机调试时我每次点击Run就静默安装在手机上了,这时安装的app是没有签名的。如果我要签名的,必须把签名生成的apk发送到手机,手动安装。非常麻烦。
这里的解决方案是两步
1)将签名文件放到工程根目录下。
2)在build.gradle(Module:app)中,添加如下代码段,更改项目的结构
signingConfigs { release { keyAlias 'android.keystore' keyPassword 'password' storeFile file('D:/AndroidStudioExercise/Test326/android.keystore') storePassword 'password' } } buildTypes { debug { signingConfig signingConfigs.release } release { signingConfig signingConfigs.release } }
其中,'password'自己根据keystore来写。这样直接run,在真机调试时,app就是自带签名啦!