百度地图中导航部分引擎初始化失败的解决办法

3天前遇到百度地图导航部分的问题,各种尝试,昨天以为解决了,还发了一篇 《Android百度地图导航部分报JNI相关错误》, 但是实际上没有解决。

真正的解决办法是这样的:
在给的导航部分的Sample工程中,有一个文件“assets/BaiduNaviSDK_Resource_v1_0_0.png”,这个文件才是最终的解决办法。把它copy到自己工程对应的位置上,一切就都好了。

上一篇中的jar和so包的配置还是需要检查的。

不过我非常好奇,为啥一个png能够解决导航时候的这个错误:

07-02 20:47:36.403: E/AndroidRuntime(32564): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030001
07-02 20:47:36.403: E/AndroidRuntime(32564):    at android.content.res.Resources.getValue(Resources.java:1188)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2550)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at android.content.res.Resources.getXml(Resources.java:1046)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.util.jar.JarUtils.inflate(JarUtils.java:366)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.ui.widget.BNCommonProgressDialog.(BNCommonProgressDialog.java:25)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.ui.widget.RoutePlanObserver.showWaitProgressDialog(RoutePlanObserver.java:213)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.ui.widget.RoutePlanObserver.update(RoutePlanObserver.java:255)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.comapi.base.BNSubject.notifyObservers(BNSubject.java:69)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.comapi.routeplan.BNRoutePlaner.b(BNRoutePlaner.java:951)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.comapi.routeplan.BNRoutePlaner.setPointsToCalcRoute(BNRoutePlaner.java:1044)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.BaiduNaviManager.a(BaiduNaviManager.java:388)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.BaiduNaviManager.launchNavigator(BaiduNaviManager.java:300)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.baidu.navisdk.BaiduNaviManager.launchNavigator(BaiduNaviManager.java:418)
07-02 20:47:36.403: E/AndroidRuntime(32564):    at com.hztech.roadmap.activities.P4QueryActivity.onPointClick(P4QueryActivity.java:128)
07-02 20:47:36.403: E/AndroidRuntime(32564):    ... 14 more

看上去完全没有关系。

然后去看了一眼那个png,1.4M大。这就有问题了,一个png,1.4M大,难道百度内置了一个桌面么?
双击打开一下看看,结果提示png格式损坏。

格式损坏?难道是下载的问题?而且没有看见什么地方有这么大一个图片显示不出来!

遇到我,算baidu倒霉,这是后话。

然后我就用vi打开了一下这个文件:
百度地图中导航部分引擎初始化失败的解决办法_第1张图片

“PK”开头的文件!这肯定不是png图片,不是格式损坏,是根本就不是啊,png应该是这样的:
百度地图中导航部分引擎初始化失败的解决办法_第2张图片

看到了吧,开头的PNG和后面xml部分的图片信息,这才是png。

而且那个“PK”开头,难道真的当我不知道,这是大神Phil Katz的缩写,这厮创造了zip(或者说改造)。

难道是个zip,被硬改成png了么?不会这么龌龊吧?改回来看看吧。

改回来确实是个zip,能解压,解压之后是这样的:

百度地图中导航部分引擎初始化失败的解决办法_第3张图片

这下能解释为啥报错了,这里是各种资源啊!

问题时,百度,导航那个哥们,你这么做真的好么,对得起谁呢?
PK大神的zip是这么用的么?还要顶一个png的名字?
为啥文档上不写?为啥lib包里没有?想不想让人用?
你们百度都是干这种勾当的?
源代码保护靠这个?
鄙视!

你可能感兴趣的:(Android学习)