【baiduMap】解决百度地图混淆代码后崩溃问题

今天做百度地图时出现一些小问题,一搜发现大家似乎都遇到过这样的问题。

  大家知道百度地图API需要申请Key,填写安全码

  安全码的组成规则为:Android签名证书的sha1值+“;”+packagename(即:数字签名+分号+包名)

  debug的话,代码没有经过混淆,百度地图正常使用

 

  但是大家发布到应用市场的apk一般都是经过加密的,有点知识产权保护意识的都会有代码混淆。就会用一套自己的keystore,重新设定“安全码后”,导出apk时没有报任何错误。但是当我装载手机上使用百度地图定位时,地图绘制了一大半,就死掉了,留下log控制台有这么句话,经过google查找,然后把百度地图官网又仔细读了便,果然功夫不负有心人,还是让我找到了。

com.baidu.platform.comapi.map.MapRenderer.nativeRender(Native Method)

当然这里还报有其他错误


官网明确指出:

3.6.5 为何我的程序在不混淆之前可以运行,混淆之后不能运行了?

栅格版SDK(即1.3.5及之前的版本):

如果您使用proguard进行混淆,请在您的混淆配置文件中添加如下语句:
-keep class com.baidu.mapapi.** {*;}

矢量版SDK(即2.0.0及之后的版本):
如果是用proguard ,以下配置供参考:
#-libraryjars libs/baidumapapi_v2_1_2.jar 替换成自己所用版本的jar包
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
其他混淆工具也请进行与此类似的配置,指定对mapapi中的类和方法不进行混淆。



小猿我用的是

 target=android-17
proguard.config=proguard-project.txt 低版本有proguard.cfg基本类似


在proguard-project.txt中添加如下(本猿引用的是百度v2_1_3这版的jar包,码友们就换成自己的包就好了)

-libraryjars libs/baidumapapi_v2_1_3.jar
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}

最后找到原因就是我混淆代码时少了这行
-keep class vi.com.gdi.bgl.android.**{*;}

再次导出一版,试试,地图功能就可以正常使用了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值