5555555~~~ 都别劝我,让我哭一会儿~~~ 妈的啥玩意儿啊。。。。弄这个bug一度弄到自己崩溃,整整花了十个多小时,偏偏自己又是一个死性子,非要给弄出来。。
还好手机经摔!
还好运气够好!
还好自己坚持了下来!
好吧,其实个中辛酸只有经历过才会懂,偏偏又不能靠别人,只能自己解决。
问题一:
由于自己的心急,加上没有看开发文档的习惯,更多的是喜欢跟着一些博客撞一脸灰,但是大部分时间都能解决。但是这次则是一个意外。(其实也不是看不懂开发文档,主要感觉开发文档都是很大很全的那种,时间成本有点大)。
解决: 下一次跟着博客炼的时候一定要看一下时间,因为版本的迭代更新很快。 另外,最好跟着官网的例子走,因为照样有很细很全的。 至少百度地图开放平台就是。
问题二:
集成百度地图的时候,面对一堆so库,以及它自带的jar包,不知所措。
解决: 跟着官方的demo的例子放so库,不要想当然的删除一些库。 此外,必须有足够的gradle关于android插件方面的配置经验,比如让模块识别 libs包下的so库: sourceSets {main {jniLibs.srcDirs = ['libs']}},当然,它的jar包也需要在dependencies中声明:repositories { flatDir { dirs 'libs' } } ; api files('libs/jar包')。 此外这里有一个问题就是so库兼容包。 就是libs放so库的那几个文件夹armeabi,是针对不同cpu架构而设立的兼容包。
问题三:
程序报NetWork location failed because baidu location service can not decrypt the request query, please check the so file.
解决: 以上两个解决方法的合集。
问题四:
程序报: 百度地图的ak不通过。 最坑。。。
过程: 首先在百度开放平台根据网上的各种教程拿到sha1,结合自己的程序包名。 申请到密钥。 然后根据墙内的各种教程,设置,运行。 最终出现 第一次运行可以定位,后面的都是null,无法拿到 NDKLocation对象。 调试提示 密钥不对。 去网上搜: 基本都是包名写错的情况。 但是我百分百确信自己没有写错。 纠结,郁闷,彷徨,愤怒。 简直了。。。。。 熬了很多个小时。
解决: 最后我思考了所有可能出错的环节。 从每个环节的作用以及可能实现的途径入手。 最终的原因是: android studio的签名偏好的原因。 虽然我之前也从这个思路入手过:
以上的步骤自己重复了不下5遍。 但是都没有结果。
最终的解决办法就是简单粗暴的,啥图形界面不要。 不整这些虚的:
这样弄了后,会惊奇的发现自己的app竟然装不上了。 session失败。 原因就是相同的app,但是签名不同。 我试了很多次,因为我已经删除了原来的app还是不行。 最终是用软件将残留的安装包目录清理了就好了。 测试成功。。。 感动地痛哭流涕。。。
参考思路: android软件签名打包。 所以这次解决问题并不是直接针对问题问问题,因为这样总会有没遇到的问题。 所以,开发者的存在还是具有不可替代性的。