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.soreferenced in your project. -
If you can’t delete the
libsqlite.soin your project, delete thelibsqlite.soin the SDK’slibsdirectory.
Link
If needed, you can use this libsqlite.so file.
More support
If you have any questions, feel free to submit a ticket.