同时集成阿里云旺与友盟推送,初始化失败s:-11,s1:accs bindapp error!的解决办法

时间:2024-04-11 13:58:53



在应用中需要同时集成聊天和推送功能,聊天选用阿里的sdk(百川云旺),推送选用友盟的pushSDK。



这时候悲剧就出现了,注册友盟的时候报错。


 I/com.umeng.message.PushAgent: register-->onFailure-->s:-11,s1:accs bindapp error!



单独集成友盟,去掉云旺相关代码,却能够正常初始化,坑!


查看日志,发现是找不到so文件导致的。应该是集成两个sdk造成so冲突的原因吧。


 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/XXX.apk"],nativeLibraryDirectories=[/data/app/XXX/lib/arm64,
 /system/fake-libs64, /data/app/XX.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]] couldn't find "libtnet-3.1.11.so"

 java.lang.UnsatisfiedLinkError: dlopen failed: 
 "/data/data/XXX/files/libtnet-3.1.11bk1.so" is 32-bit instead of 64-bit






查看pushSDK下的libs目录so文件如下:



同时集成阿里云旺与友盟推送,初始化失败s:-11,s1:accs bindapp error!的解决办法







解决方法:


添加armeabi-v7a的so文件,并配置gradle如下:


buildTypes {

    release {


          ndk {
                abiFilters "x86", "armeabi", "armeabi-v7a"
              }
        }
}



同时集成阿里云旺与友盟推送,初始化失败s:-11,s1:accs bindapp error!的解决办法




总结
如果项目只包含了 armeabi,那么在所有Android设备都可以运行;
 如果项目只包含了 armeabi-v7a,除armeabi架构的设备外都可以运行; 
如果项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是无法运行的; 如果同时包含了 armeabi,armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,同时也会导致包变大。

试试加个armeabi-v7a包,哈哈,可以用啦!!!