百度地图开发(1):申请开发秘钥相关
百度地图开发指南:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/introduction
百度地图SDK下载:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
(1)根据开发指南提供的方法申请开发秘钥
如上,填写应用名称,暂时不知道这里的应用名称有何作用,虽然不会影响apk功能,但可能与apk在百度商店的发布有关,因此此处我还是写上了我将要编译出来的apk的名称。应用类型选择Android SDK。
接下来就是最为重要的数字签名(SHA1)和包名了,因为开发秘钥是由sha1和包名自动生成的,而apk也需要经过签名,这也是百度SDK能与每一个应用关联起来的原因(如果同一个开发者使用相同的SHA1和包名开发不同的应用,此时使用同一个开发秘钥应该也是可以的),所以这两个值一定要写对,如果没写对,则不会出现地图,而是网格线样式。并且会报如下所示的error:
baidumapsdk: Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败
包名不作赘述,SHA1的生成开发指南上提供了获取SHA1的方法,这里唯一需要说明的是Eclipse和Android studio是使用keystore进行签名的。而使用原始工程mm编译使用的是pk8, x509.pem进行签名的。因此二者生成的SHA1不一样,当我们使用原始工程编译时,需要先把pk8, x509.pem转换成keystore格式,再按照开发指南上的方式生成SHA1。
转《把Android源码中的秘钥对转换为keystore的方法》
下面将演示如何使用命令行将android源码秘钥转换为keystore:
android.mk中使用platform签名
LOCAL_CERTIFICATE := platform
所以我们使用签名文件:
platform.pk8和platform.x509.pem
把这两个文件从security中拷贝出来或者直接将命令行目录转到security目录
1.
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
当前目录下生成platform.pem文件。
2.
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name androiddebugkey
当前目录下生成platform.p12文件。
3.
keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android
当前目录下生成platform.jks文件,这就是转换后的keystore文件,我们可以直接命名为keystore。
4. 按照开发指南提供的命令获取SHA1值
keytool -list -v -keystore platform.jks
keytool是jdk的工具,如果加入到了环境变量中,则可以直接在当前目录的命令行使用。
如上,填写SHA1值和包名后点击提交则可生成对应的开发秘钥。