Android 百度地图SDK闪退

在调用百度SDK时出现闪退现象,要知道闪退的具体原因,不然搜了一堆教程,发现纯纯浪费时间,作者也是痛定思痛,特进行总结,以防自己以后犯病。

通过Android IDE查看APP运行日志

  我是使用的Android Studio,伙伴们也可根据自己的情况查询自己的IDE查看日志方式。在AS中,老版本可通过Android Monitor进行查看,新版本可使用LogCat进行查看,二者在AS底边栏即能够看到,在其窗口中能够看到APP运行的详细情况,在出现闪退时,能够通过窗口看见详细的报错信息,而后根据报错信息进行Debug。

Error 1:errorcode: 230 uid: -1 appid -1 msg: APP Mcode码校验失败

  如下图所示,提示认证失败,一般出现此问题的原因是申请百度地图SDK时所用的SHA1值与实际APP所用的SHA1值不同。现在百度地图密钥申请时,需要的是APP的发布版SHA1值,但是我们在调试过程中,实际上默认使用的都是调试版的SHA1,所以需要使用调试版的SHA1值替换掉申请时所用的发布版SHA1值,最终发布后,再去百度地图SDK控制台替换成发布版SHA1。
  获取SHA1值的教程网上有很多,伙伴们可自行查找,还有另一种解决方法,直接查看APP的APK所用的签名,然后进行替换,我是通过AS的LogCat直接就能查看到其所用的SHA1值,看网上还有通过build的APK查看的,我是没找得到密钥文件,不过也贴出来给大家参考:
1、build APK
2、将.apk文件修改后缀为.zip,当然不改也可以,用7Z能直接打开
3、进入META-INF目录,寻找文件CERT.RSA,我是没找到这个文件
4、在该目录下运行cmd命令:keytool -printcert -file CERT.RSA ,这里要注意本机是否存在多个JDK版本,若存在的话,则需要使用编译APP时所用的JDK版本相对应的keytool.exe

## Error 2:com.baidu.mapapi.common.BaiduMapSDKException: not agree privacyMode, please invoke SDKInitializer.setAgreePrivacy(Context, boolean) function   如上图所示,提示异常原因为未同意隐私协议,这个需要在初始化SDK时通过setAgreePrivacy进行设置,代码如下
SDKInitializer.setAgreePrivacy(getApplicationContext(),true);
SDKInitializer.initialize(getApplicationContext());
SDKInitializer.setCoordType(CoordType.BD09LL);
LocationClient.setAgreePrivacy(true);

目前我是只遇到了以上两种问题,特此记录,有新问题再补充。

猜你喜欢

转载自blog.csdn.net/qq_35308053/article/details/130638872