Hi. Updated SqlDelight 1.5.3 -> 1.5.5 and Kotli...
# squarelibraries
a
Hi. Updated SqlDelight 1.5.3 -> 1.5.5 and Kotlin 1.7.20 -> 1.8.10. Using Jvm Driver in tests on Android, all worked before, but after updating, getting
java.lang.UnsatisfiedLinkError: dlopen failed: library "libsqlitejdbc.so" not found
. Not updating SqlDelight but updating Kotlin gives me a lot of
Redeclaration
errors.
Here is the driver in Koin:
Copy code
single {
        try {
            AndroidSqliteDriver(
                MoboxDb.Schema,
                context = get(),
                name = "MoboxDb",
                callback = object : AndroidSqliteDriver.Callback(MoboxDb.Schema) {
                    override fun onOpen(db: SupportSQLiteDatabase) {
                        db.execSQL("PRAGMA foreign_keys=ON;")
                    }
                }
            )
        } catch (exception: NoBeanDefFoundException) {
            JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
                .also { MoboxDb.Schema.create(it) }
        }
    }.onClose { it?.close() }
And the error itself:
Copy code
FATAL EXCEPTION: main
Process: packageName.android, PID: 10717
java.lang.UnsatisfiedLinkError: dlopen failed: library "libsqlitejdbc.so" not found
    at java.lang.Runtime.loadLibrary0(Runtime.java:1077)
    at java.lang.Runtime.loadLibrary0(Runtime.java:998)
    at java.lang.System.loadLibrary(System.java:1656)
    at org.sqlite.core.NativeDB.<clinit>(NativeDB.java:39)
    at org.sqlite.core.NativeDB.load(NativeDB.java:60)
    at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:235)
    at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:61)
    at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28)
    at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:21)
    at org.sqlite.JDBC.createConnection(JDBC.java:115)
    at org.sqlite.JDBC.connect(JDBC.java:90)
    at java.sql.DriverManager.getConnection(DriverManager.java:580)
    at java.sql.DriverManager.getConnection(DriverManager.java:190)
    at com.squareup.sqldelight.sqlite.driver.InMemoryConnectionManager.<init>(JdbcSqliteDriver.kt:46)
    at com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriverKt.connectionManager(JdbcSqliteDriver.kt:24)
    at com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriverKt.access$connectionManager(JdbcSqliteDriver.kt:1)
    at com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver.<init>(JdbcSqliteDriver.kt:17)
    at com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver.<init>(JdbcSqliteDriver.kt:10)
    at com.txconnected.mobox.di.modules.DatabaseModuleAndroidKt$databaseModulePlatform$1$1.invoke(DatabaseModuleAndroid.kt:26)
    at com.txconnected.mobox.di.modules.DatabaseModuleAndroidKt$databaseModulePlatform$1$1.invoke(DatabaseModuleAndroid.kt:13)
    at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:52)
    at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:51)
    at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:20)
    at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:51)
    at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:116)
    at org.koin.core.scope.Scope.resolveValue(Scope.kt:246)
    at org.koin.core.scope.Scope.resolveInstance(Scope.kt:231)
    at org.koin.core.scope.Scope.get(Scope.kt:210)
    at com.txconnected.mobox.di.modules.DatabaseModuleKt$databaseModuleCommon$1$1.invoke(DatabaseModule.kt:117)
    at com.txconnected.mobox.di.modules.DatabaseModuleKt$databaseModuleCommon$1$1.invoke(DatabaseModule.kt:35)
    at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:52)
    at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:51)
    at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:20)
    at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:51)
    at org.koin.core.registry.InstanceRegistry.createEagerInstances(InstanceRegistry.kt:96)
    at org.koin.core.registry.InstanceRegistry.createAllEagerInstances$koin_core(InstanceRegistry.kt:64)
    at org.koin.core.Koin.createEagerInstances(Koin.kt:339)
    at org.koin.core.KoinApplication.createEagerInstances(KoinApplication.kt:74)
    at com.txconnected.mobox.di.KoinKt$initSDKKoin$2.invoke(Koin.kt:79)
    at com.txconnected.mobox.di.KoinKt$initSDKKoin$2.invoke(Koin.kt:63)
    at org.koin.dsl.KoinApplicationKt.koinApplication(KoinApplication.kt:30)
    at com.txconnected.mobox.di.KoinKt.initSDKKoin(Koin.kt:63)
    at com.txconnected.mobox.android.MainActivity.onCreate(MainActivity.kt:23)
    at android.app.Activity.performCreate(Activity.java:8051)
    at android.app.Activity.performCreate(Activity.java:8031)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
h
I don't think this is related to sqldelight but some linker issues with the jdbc/native driver, as you can see in the stacktrace.
And yeah, sqldelight 1.5.5 is required for kotlin 1.8.