Description
After integrating or upgrading the RongCloud SDK, the app crashes and fails to connect to IM. The log shows a ClassNotFoundException
exception.
The class SQLiteCustomFunction
is missing, as shown in the stack trace below:
[RongLog][ NativeObject ] load sqlite:Beginning load of sqlite...
Unable to find class org/sqlite/database/sqlite/SQLiteCustomFunction
JNI DETECTED ERROR IN APPLICATION: JNI GetFieldID called with pending exception java.lang.ClassNotFoundException:
Didn't find class "org.sqlite.database.sqlite.SQLiteCustomFunction" on path: DexPathList[[zip file "/data/app/***/base.apk"],nativeLibraryDirectories=[/data/app/***/lib/arm64, /data/app/***/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]]
at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:196)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.Class) (Runtime.java:-2)
at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:1115)
at void java.lang.Runtime.loadLibrary0(java.lang.ClassLoader, java.lang.Class, java.lang.String) (Runtime.java:1069)
at void java.lang.Runtime.loadLibrary0(java.lang.Class, java.lang.String) (Runtime.java:1007)
at void java.lang.System.loadLibrary(java.lang.String) (System.java:1667)
at void io.rong.imlib.relinker.SystemLibraryLoader.loadLibrary(java.lang.String) (SystemLibraryLoader.java:24)
at void io.rong.imlib.relinker.ReLinkerInstance.loadLibraryInternal(android.content.Context, java.lang.String, java.lang.String) (ReLinkerInstance.java:158)
at void io.rong.imlib.relinker.ReLinkerInstance.loadLibrary(android.content.Context, java.lang.String, java.lang.String, io.rong.imlib.relinker.ReLinker$LoadListener) (ReLinkerInstance.java:132)
at void io.rong.imlib.relinker.ReLinkerInstance.loadLibrary(android.content.Context, java.lang.String) (ReLinkerInstance.java:88)
at void io.rong.imlib.NativeObject.<init>(android.content.Context, java.lang.String) (NativeObject.java:42)
at void io.rong.imlib.NativeClient.init(android.content.Context, java.lang.String, java.lang.String, io.rong.imlib.RCConfiguration, java.lang.String) (NativeClient.java:518)
at void io.rong.imlib.LibHandlerStub.<init>(android.content.Context, java.lang.String, java.lang.String, io.rong.imlib.RCConfiguration, java.lang.String, int) (LibHandlerStub.java:138)
at android.os.IBinder io.rong.imlib.ipc.RongService.onBind(android.content.Intent) (RongService.java:46)
at void android.app.ActivityThread.handleBindService(android.app.ActivityThread$BindServiceData) (ActivityThread.java:4430)
at void android.app.ActivityThread.access$1800(android.app.ActivityThread, android.app.ActivityThread$BindServiceData) (ActivityThread.java:266)
at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:2143)
at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:107)
at void android.os.Looper.loop() (Looper.java:230)
at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:7987)
at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:526)
at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1034)
in call to GetFieldID
from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.Class)
Analysis
This issue is usually caused by a conflict between the libsqlite.so
library in the SDK’s libs
directory and the libsqlite.so
library referenced in your local project.
Solution
Delete the conflicting libsqlite.so
library. Choose one of the following solutions:
-
Delete the
libsqlite.so
referenced in your project. -
If you can’t delete the
libsqlite.so
in your project, delete thelibsqlite.so
in the SDK’slibs
directory.
Link
If needed, you can use this libsqlite.so file.
More support
If you have any questions, feel free to submit a ticket.