Android - 百度地图打包混淆代码后地图崩溃的解决方法

前言:

之前开发项目用到百度地图,测试的时候没有问题;但是,一打包加混淆之后就出现地图崩溃的问题;项目已经完结,趁有闲暇时间赶紧分享一下自己的解决方案。

问题现象:

   之前做百度地图开发时出现一些小问题、一搜发现大家似乎都遇到过这样的问题、大家知道百度地图API需要申请Key,填写安全码。

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

debug的话、代码没有经过混淆、百度地图正常使用、只有在打包之后才有这个问题。

  但是呢、基本上发布到应用市场的apk一般都是经过加密的、有点知识产权保护意识的都会有代码混淆、

就会用一套自己的keystore,重新设定“安全码后”、导出apk时没有报任何错误

但是当我装载手机上使用百度地图定位时、地图绘制了一大半、就死掉了、留下log控制台有这么句话

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

分析原因:

这里只贴了一句、还有很多异常信息哈、经过google查找、然后把百度地图官网又仔细读了便、果然功夫不负有心人、还是让我找到了、其实官方已经明确指出了

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

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

如果您使用proguard进行混淆,请在您的混淆配置文件中添加如下语句:

-keep class com.baidu.mapapi.** {*;}

矢量版SDK(即2.0.0及之后的版本):

如果是用proguard ,以下配置供参考:

#-libraryjars libs/baidumapapi_v3_1_0.jar 替换成自己所用版本的jar
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}

其他混淆工具也请进行与此类似的配置,指定对mapapi中的类和方法不进行混淆。

解决方案

在proguard-project.txt中添加如下(引用的是百度baidumapapi_v3_1_0.jar这版的jar包、换成自己的包就好了)、

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

其实最后找到原因就是代码混淆时少了这行、加上之后再次导出、地图功能就可以正常使用了

-keep class vi.com.gdi.bgl.android.**{*;}

时间: 2024-10-17 17:09:05

Android - 百度地图打包混淆代码后地图崩溃的解决方法的相关文章

eclipse导入android项目后出现错误的解决方法

eclipse导入android项目后出现错误的解决方法 出现这样的错误是因为没有为项目指定sdk的原因 为项目指定sdk的方法右键点击工程名称,弹出菜单中点击“Properties->Android”,在Project build target 中指定你要使用的SDK版本即可

Android SDK更新 Connection to http://dl-ssl.google.com refused 解决方法

原地址:http://blog.csdn.net/foxeatapple/article/details/8450372 问题描述 使用SDK Manager更新时出现问题Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Connection to https://dl-ssl.google.com refusedFailed to fetch URL http:/

android Run模式也会出现"Waiting for debugger"的解决方法

android Run模式也会出现"Waiting for debugger"的解决方法 出现“waiting for debugger”窗口是在debug模式下运行出现的.但是,今天我在run模式下也出现了此窗口,并且一直如此.卸载程序重新运行也是如此.android真机在脱离电脑的情况下,会一直死在“waiting for debugger”的. run 后eclipse 就直接跳出 The JAR /home/xxx/.../android.jar has no source a

中文后乱码问题的解决方法(可能解决)

用 Sublime Text 2 保存中文后乱码问题的解决方法(可能解决) https://blog.twofei.com/blog iconv字符编码转换 UTF-8 UCS-2(LE/BE) GBK 在群里面听到有人说起有一款新的编辑器 Sublime Text 2 很不错, 于是我下载下来试用了一下, 发现不支持中文, 听说要安装什么插件, 不管了, 没打算用, 但... 我打开了我的一个源代码C文件, 突然发现了一点小错误, 就用ST2修改后Ctrl+S保存了, 当时没在意什么, 到了几

Ubuntu Server 14.04 选择中文安装后日期乱码的解决方法

Ubuntu Server 14.04选择中文安装后,默认的/etc/default/locale会使某些中文日期乱码,执行ll和date可见. /etc/default/locale 原来内容为: LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_NUMERIC="zh_CN" LC_TIME="zh_CN" LC_MONETARY="zh_CN" LC_PAPER=&q

android docs本地帮助文档打开特别慢的解决方法

1.断网,使用IE打开 2.使用火狐浏览器脱机浏览 android docs本地帮助文档打开特别慢的解决方法,布布扣,bubuko.com

eclipse 中提示tomcat 的端口被占用了 后的最快捷解决方法

很多时候运行tomcat 的时候总是会提示tomcat 的端口呗占用 但是任务管理器里面还找不到是哪个端口被占用了 因此很多人就重新配置tomcat  或者去修改tomcat的端口号 ,其实这么做太麻烦了 ,小弟在这里告诉你一个非常简单的方法. 1.在开始菜单中选择运行  然后输入cmd  进入DOS界面.显示如下: 2.在Dos窗口中输入netstat   -ano|findstr  8080(注意的 我的透明cat 的断口号 是8080 你的断口号是多少就写多少) 输入完成后回车 会弹出下面

Debian9安装Atom后无法启动之解决方法

Debian9安装Atom后无法启动之解决方法 在Atom官网下载了适合于Debian的安装包后,使用$ sudo dpkg -i Atom.deb进行了安装,然后点击Atom的图标启动时,发现加载半天后退出了. 打开命令行,执行命令$ atom,发现有错误提示,提示内容如下: 大专栏  Debian9安装Atom后无法启动之解决方法ht">$ atom $ atom 依赖于libgconf-2.4.so,单并没有发现该so文件,加载失败 原来是缺少依赖了,不多说,直接修复缺少的依赖: $

APP 打包混淆代码

APP项目开发完成之后,当测试人员测试了,没有Bug了,一般情况下,公司会有一些技术人员负责发布.推广APP产品.这是一般正规的大公司会有专门的市场推广部门,技术维护部门,对APP进行加密混淆打包,如:使用Ant加密,还有使用第三方的加密方式(爱加密,梆梆,APKProtect等).想必APP产品为什么需要加密混淆,做为开发人员.老板都明白其中的隐含之处.然而,还有一种方式可以打包混淆APP,那就是 android 通过eclipse混淆代码 打包 + proguard 方式.具体的步骤如下: