Skip to content

Android 15: Support 16 KB page sizesΒ #1498

@let-it-snow

Description

@let-it-snow

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

  • Latest.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions