融云IM与百度LBS结合的那些坑
近来,由于项目需求的需要,需要在项目中集成百度LBS SDK以及融云IM SDK,首先遇到的就是第三方SDK兼容性问题,百度LBS与融云IM发生了排斥,产生了严重的问题:应用在启动后以及发生异常,爆出一些SO相关的异常。当然,在问题出现前,所有的相关的基础配置都是良好的。
05-02 12:51:08.476 13320-13320/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-02 12:51:08.476 13320-13320/? A/DEBUG: Build fingerprint: 'Xiaomi/cancro_wc_lte/cancro:6.0.1/MMB29M/7.4.27:user/release-keys'
05-02 12:51:08.476 13320-13320/? A/DEBUG: Revision: '0'
05-02 12:51:08.476 13320-13320/? A/DEBUG: ABI: 'arm'
05-02 12:51:08.476 13320-13320/? A/DEBUG: pid: 18575, tid: 18575, name: io.rong.push >>> io.rong.push <<<
05-02 12:51:08.476 13320-13320/? A/DEBUG: signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x0
05-02 12:51:08.499 13320-13320/? A/DEBUG: r0 b4c96f00 r1 becf79ac r2 becf79b0 r3 00000001
05-02 12:51:08.499 13320-13320/? A/DEBUG: r4 00000000 r5 becf79b0 r6 b4c96f00 r7 becf796c
05-02 12:51:08.500 13320-13320/? A/DEBUG: r8 00000000 r9 b4cb6500 sl becf79b0 fp b4cb6500
05-02 12:51:08.500 13320-13320/? A/DEBUG: ip a09741a9 sp becf7950 lr b4701a9b pc a09741b8 cpsr 80070030
05-02 12:51:08.511 13320-13320/? A/DEBUG: backtrace:
05-02 12:51:08.512 13320-13320/? A/DEBUG: #00 pc 000101b8 /data/data/**packagename**/files/libs/libBaiduMapSDK_base_v4_3_0.so
05-02 12:51:08.512 13320-13320/? A/DEBUG: #01 pc 000eaa99 /system/lib/libart.so (art_quick_generic_jni_trampoline+40)
05-02 12:51:08.512 13320-13320/? A/DEBUG: #02 pc 000e63a1 /system/lib/libart.so (art_quick_invoke_stub_internal+64)
05-02 12:51:08.513 13320-13320/? A/DEBUG: #03 pc 00402aa3 /system/lib/libart.so (art_quick_invoke_static_stub+170)
05-02 12:51:08.513 13320-13320/? A/DEBUG: #04 pc 007fbae4 [stack]
以上错误,最会让人怀疑是百度SDK的问题,然而,你可能会错怪它。其实这个问题是由于ndk编译架构的配置问题,这样说吧,百度的NDK兼容一下两个系统架构 armeabi ; 然而融云的只兼容armeabi-v7a, x86。由此,这就产生了分析,这里需要对此都兼顾一下,选择armeabi的,所以app.gradle里面应该这样配置:
ndk {
abiFilters "armeabi"
}
现在可以再尝试编译一次,先恭喜你,大功告成!