
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
在7.0以上的手机上,调用connect方法不回调的问题:
从 Android 7.0 开始,系统将阻止应用动态链接非公开NDK 库,这种库可能会导致您的应用崩溃。
为帮助您识别加载私有库的问题,logcat 可能会生成一个警告或运行时错误。例如,如果您的应用面向 API 级别23 或更低级别,并在运行 Android 7.0 的设备上尝试访问私有库,您可能会看到一个类似于下面所示的警告:
03-21 17:07:51.502 31234 31234 W linker : library "libsqlite.so" ("/system/lib/libandroid_runtime.so") needed or dlopened by "/data/app/com.popular-app.android-2/lib/arm/libapplib.so" is not accessible for the namespace "classloader-namespace" - the access is temporarily granted as a workaround for http://b/26394120
这些 logcat 警告通知您哪个库正在尝试访问私有平台API,但不会导致您的应用崩溃。但是,如果应用面向 API级别24 或更高级别,logcat 会生成以下运行时错误,您的应用可能会崩溃:
java.lang.UnsatisfiedLinkError: dlopen failed: library "libsqlite.so" ("/system/lib/libcutils.so") needed or dlopened by "/system/lib/libnativeloader.so" is not accessible for the namespace "classloader-namespace" at java.lang.Runtime.loadLibrary0(Runtime.java:977) at java.lang.System.loadLibrary(System.java:1602)
如果您的应用使用动态链接到私有平台 API 的第三方库,您可能也会看到上述 logcat 输出。
原因是7.0以后,Andorid不允许直接访问系统的私有so文件了。
两种解决方案:
(1)把targetSdkVersion改小于24。
(2)apk中带上需要的so文件,这儿是libsqlite.so
(3)升级 SDK 版本,SDK 版本 大于等于 2.9.19 默认添加 libsqlite.so 。
下载附件中的so文件,放到对应的文件夹下,如libs/armv7-abi/libsqlite.so,并注意你的gradle是否引用了这个目录,如 jniLibs.srcDirs = ['libs']
编译测试。
通过Android Studio的Analyze APK功能[Build -> Analyze APK...], 或直接解开apk包,查看是apk的lib目录下是否已包含libsqlite.so文件。
libsqlite.so的下载链接:
http://support.rongcloud.cn/kb/NTQw