WalletConnect / WalletConnectKotlinV2

WalletConnect Kotlin SDK v2
Apache License 2.0
253 stars 85 forks source link

Android 15: Support 16 KB page sizes #1498

Open let-it-snow opened 1 month ago

let-it-snow commented 1 month 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 WallectConnect.

java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH/DT_GNU_HASH in "/data/app/~~E6vv6wRuUSZbkb1NNvd8aw==/com.example.myapplication-M1ky7_4CIEQ4w_9erpREtw==/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.walletconnect.android.di.CoreStorageModuleKt$coreStorageModule$1$1.invoke(CoreStorageModule.kt:186)
at com.walletconnect.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.walletconnect.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1.invoke$createCoreDB(BaseStorageModule.kt:843)
at com.walletconnect.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1.access$invoke$createCoreDB(BaseStorageModule.kt:31)
at com.walletconnect.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$6.invoke(BaseStorageModule.kt:86)
at com.walletconnect.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.walletconnect.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$9.invoke(BaseStorageModule.kt:139)
at com.walletconnect.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.walletconnect.android.internal.common.di.BaseStorageModuleKt$baseStorageModule$1$15.invoke(BaseStorageModule.kt:139)
at com.walletconnect.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.walletconnect.android.internal.common.di.CorePairingModuleKt$corePairingModule$1$1.invoke(CorePairingModule.kt:39)
at com.walletconnect.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.walletconnect.android.pairing.client.PairingProtocol.initialize(PairingProtocol.kt:188)
at com.walletconnect.android.CoreProtocol.setup(CoreProtocol.kt:191)
at com.walletconnect.android.CoreProtocol.initialize(CoreProtocol.kt:84)
at com.walletconnect.android.CoreClient.initialize(Unknown Source:42)
at com.walletconnect.android.CoreInterface$DefaultImpls.initialize$default(CoreInterface.kt:31)
at com.example.myapplication.MainActivity.initWC(MainActivity.kt:49)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:26)
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.walletconnect:android-bom:1.35.2"))
    implementation("com.walletconnect:android-core")
    implementation("com.walletconnect:sign")
  1. Apply any walletconnect 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.