reown-com / reown-kotlin

Apache License 2.0
10 stars 1 forks source link

Android 15: Support 16 KB page sizes #16

Open let-it-snow opened 2 weeks ago

let-it-snow commented 2 weeks ago

Describe the bug I have testing our appliaction with an Android emulator with Android 15 with support for 16KB page sizes, and it crashed with the below stacktrace when trying to init the Reown.

java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH/DT_GNU_HASH in "/data/app/~~jH10NLfG8joUvpzlWBrw1Q==/com.example.myapplication-UzS6gLJ4BtCdZKs3Q_dg0Q==/base.apk!/lib/arm64-v8a/libsqlcipher.so" (new hash type from the future?)
    at java.lang.Runtime.loadLibrary0(Runtime.java:1081)
    at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
    at java.lang.System.loadLibrary(System.java:1765)
    at net.sqlcipher.database.SQLiteDatabase$1.loadLibraries(SQLiteDatabase.java:230)
    at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:247)
    at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:226)
    at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:219)
    at net.sqlcipher.database.SupportHelper.<init>(SupportHelper.java:31)
    at net.sqlcipher.database.SupportFactory.create(SupportFactory.java:43)
    at app.cash.sqldelight.driver.android.AndroidSqliteDriver.<init>(AndroidSqliteDriver.kt:66)
    at app.cash.sqldelight.driver.android.AndroidSqliteDriver.<init>(AndroidSqliteDriver.kt:55)
    at com.reown.android.di.CoreStorageModuleKt$coreStorageModule$1$1.invoke(CoreStorageModule.kt:186)
    at com.reown.android.di.CoreStorageModuleKt$coreStorageModule$1$1.invoke(CoreStorageModule.kt:185)
    at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
    at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:55)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
    at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36)
    at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53)
    at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:109)
    at org.koin.core.scope.Scope.resolveValue(Scope.kt:248)
    at org.koin.core.scope.Scope.resolveInstance(Scope.kt:234)
    at org.koin.core.scope.Scope.get(Scope.kt:213)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1.invoke$createCoreDB(BaseStorageModule.kt:843)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1.access$invoke$createCoreDB(BaseStorageModule.kt:31)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$6.invoke(BaseStorageModule.kt:86)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$6.invoke(BaseStorageModule.kt:84)
    at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
    at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:55)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
    at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36)
    at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53)
    at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:109)
    at org.koin.core.scope.Scope.resolveValue(Scope.kt:248)
    at org.koin.core.scope.Scope.resolveInstance(Scope.kt:234)
    at org.koin.core.scope.Scope.get(Scope.kt:213)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$9.invoke(BaseStorageModule.kt:139)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$9.invoke(BaseStorageModule.kt:107)
    at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
    at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:55)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
    at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36)
    at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53)
    at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:109)
    at org.koin.core.scope.Scope.resolveValue(Scope.kt:248)
    at org.koin.core.scope.Scope.resolveInstance(Scope.kt:234)
    at org.koin.core.scope.Scope.get(Scope.kt:213)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$15.invoke(BaseStorageModule.kt:139)
    at com.reown.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$15.invoke(BaseStorageModule.kt:119)
    at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
    at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:55)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
    at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36)
    at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53)
    at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:109)
    at org.koin.core.scope.Scope.resolveValue(Scope.kt:248)
    at org.koin.core.scope.Scope.resolveInstance(Scope.kt:234)
    at org.koin.core.scope.Scope.get(Scope.kt:213)
    at com.reown.android.internal.common.di.CorePairingModuleKt$corePairingModule$1$1.invoke(CorePairingModule.kt:42)
    at com.reown.android.internal.common.di.CorePairingModuleKt$corePairingModule$1$1.invoke(CorePairingModule.kt:10)
    at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
    at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:55)
    at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
    at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36)
    at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53)
    at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:109)
    at org.koin.core.scope.Scope.resolveValue(Scope.kt:248)
    at org.koin.core.scope.Scope.resolveInstance(Scope.kt:234)
    at org.koin.core.scope.Scope.get(Scope.kt:213)
    at com.reown.android.pairing.client.PairingProtocol.initialize(PairingProtocol.kt:146)
    at com.reown.android.CoreProtocol.setup(CoreProtocol.kt:188)
    at com.reown.android.CoreProtocol.initialize(CoreProtocol.kt:82)
    at com.reown.android.CoreClient.initialize(Unknown Source:42)
    at com.reown.android.CoreInterface$DefaultImpls.initialize$default(CoreInterface.kt:27)
    at com.example.myapplication.MainActivity.initWC(MainActivity.kt:47)
    at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:24)
    at android.app.Activity.performCreate(Activity.java:9002)
    at android.app.Activity.performCreate(Activity.java:8980)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1526)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4030)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4235)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:112)
    at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:174)
    at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:109)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:81)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2636)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loopOnce(Looper.java:232)
    at android.os.Looper.loop(Looper.java:317)
    at android.app.ActivityThread.main(ActivityThread.java:8705)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)

SDK Version

Steps to reproduce the behavior:

  1. Create an Empty Android project with targerSDK = 35.
  2. Apply BOM Dependency:
    implementation(platform("com.reown:android-bom:1.0.0"))
    implementation("com.reown:android-core")
    implementation("com.reown:appkit")
  1. Apply any Reown initialiazation code (CoreClient.initialize).
  2. Create an Android emulator following steps from this page: https://developer.android.com/guide/practices/page-sizes#16kb-emulator.
  3. Build and run the app.
  4. Crash.

Additional context See realated issues like this and other across the github. Looks like you have some old dependencies or something.

Thanks.