关于百度地图的问题

                                                                                                  坚持,坚持,还是坚持!!!!


    最近在开发公司3年前的项目,这个坑啊,没有需求文档,没有开发文档,总之任何的文档都没有,代码检出来一堆的错误。其中最主要的就是要更新百度地图,并且要播放出语音来。一言难尽。。。。跪上代码的错误。

   语音刚开始用的tts,百度地图用的2.1的,非常老的版本,现在都到3.6了,而且使用到的构件不少,所以在改动起来会牵扯到代码的整体结构。当初拿到的时候还是比较头疼的,但是没有办法啊,一个字“坚持”。

  刚开始的一般并没有更换tts,只是稍微改动了点代码,在三星的手机上能正常播放出来。

  百度地图升级到最新的版本,历时二周,给弄出来。

  第二版之所以推出来,是因为在测试同事的手机上无法播放出声音来,试了几次发现是他的手机不支持中文,换成英文就可以播放出来。果断换成科大讯飞的第三方,按照科大讯飞的文档开发出语音了,能播放。但是此时地图却显示不出来了,报错的情况如下:

01-27 18:05:47.491: E/AndroidRuntime(30524): FATAL EXCEPTION: main
01-27 18:05:47.491: E/AndroidRuntime(30524): java.lang.RuntimeException: Unable to start activity                                                        ComponentInfo{com.nodeservice.dcm.chezai/com.nodeservice.mobile.dailywork.activity.DailyWorkActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class com.baidu.mapapi.map.MapView
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.ActivityThread.access$700(ActivityThread.java:168)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.os.Handler.dispatchMessage(Handler.java:99)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.os.Looper.loop(Looper.java:177)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.ActivityThread.main(ActivityThread.java:5493)
01-27 18:05:47.491: E/AndroidRuntime(30524): at java.lang.reflect.Method.invokeNative(Native Method)
01-27 18:05:47.491: E/AndroidRuntime(30524): at java.lang.reflect.Method.invoke(Method.java:525)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
01-27 18:05:47.491: E/AndroidRuntime(30524): at dalvik.system.NativeStart.main(Native Method)
01-27 18:05:47.491: E/AndroidRuntime(30524): Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class com.baidu.mapapi.map.MapView
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.view.LayoutInflater.createView(LayoutInflater.java:669)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:745)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.view.LayoutInflater.rInflate(LayoutInflater.java:804)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.view.LayoutInflater.inflate(LayoutInflater.java:526)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.view.LayoutInflater.inflate(LayoutInflater.java:382)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:361)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.Activity.setContentView(Activity.java:1956)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.nodeservice.mobile.dailywork.activity.DailyWorkActivity.onCreate(DailyWorkActivity.java:118)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.Activity.performCreate(Activity.java:5372)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
01-27 18:05:47.491: E/AndroidRuntime(30524): ... 11 more
01-27 18:05:47.491: E/AndroidRuntime(30524): Caused by: java.lang.reflect.InvocationTargetException
01-27 18:05:47.491: E/AndroidRuntime(30524): at java.lang.reflect.Constructor.constructNative(Native Method)
01-27 18:05:47.491: E/AndroidRuntime(30524): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
01-27 18:05:47.491: E/AndroidRuntime(30524): at android.view.LayoutInflater.createView(LayoutInflater.java:643)
01-27 18:05:47.491: E/AndroidRuntime(30524): ... 22 more
01-27 18:05:47.491: E/AndroidRuntime(30524): Caused by: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.basemap.JNIBaseMap.Create:()J
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.baidu.platform.comjni.map.basemap.JNIBaseMap.Create(Native Method)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.baidu.platform.comjni.map.basemap.a.a(Unknown Source)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.baidu.platform.comapi.map.c.a(Unknown Source)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.baidu.platform.comapi.map.g.<init>(Unknown Source)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.baidu.mapapi.map.MapView.b(Unknown Source)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.baidu.mapapi.map.MapView.a(Unknown Source)
01-27 18:05:47.491: E/AndroidRuntime(30524): at com.baidu.mapapi.map.MapView.<init>(Unknown Source)
01-27 18:05:47.491: E/AndroidRuntime(30524): ... 25 more


   根据上述红线的部分可以看出是无法实例化百度地图的类,但是百度地图的jar包跟.so文件都拷进去了,之前测试的也正常,为什么会出现这种情况呢?第一次遇到,果断找度娘。。。。

   以下是在网上搜到的解决办法:

 ①百度地图SDK的初始化放在setContentView之前。我的是放在之前的。

 ②官方demo里面有一个 继承application的类。你需要在manifest.xml文件里进行声明,如何声明,比对下demo即可。然后问题就解决了。 我去查了下,工程里面确实发现了这个application的子类,在清单文件中,配置如下:

<application
        android:name="com.nodeservice.mobile.login.application.LoginApplication"
        android:icon="@drawable/logo"
        android:label="@string/app_name" >

   在清单文件中声明了,类的全路径也是正确的。  这个方法不行。

 ③key不对。 我工程里面的key是新申请的,所以应该不是这个问题。

 ④添加armeabi-v7a、arm64-v8a、x86、 x86_64等文件。不同的手机由于CPU的不同,也就使用不同的驱动。

ABI是指基于哪种指令集进行编译。ABI共分为四种:armeabi、armeabi-v7a、x86、mips。它们都是表示CPU的类型。

导入之后,运行正常。

如果哪位大神还有别的问题,甚至是解决办法欢迎评论。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值