You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 15模拟器16KB页大小环境下Realm初始化报错求助

解决Android 15 16KB页面模拟器上Realm初始化的UnsatisfiedLinkError问题

核心修复步骤

  • 升级Realm版本
    Realm 10.19.0及后续版本已修复Android 15灵活页面大小的适配问题,当前使用的10.18.0存在兼容性缺陷。更新gradle依赖:

    implementation 'io.realm:realm-android:10.19.0' // 或更高稳定版
    
  • 调整NDK编译参数
    除了已配置的-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON,需额外添加参数强制生成兼容旧哈希格式的SO文件,并指定正确的目标API级别:

    android {
        defaultConfig {
            externalNativeBuild {
                cmake {
                    arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON",
                              "-DANDROID_USE_LEGACY_HASH=ON",
                              "-DANDROID_PLATFORM=android-34" // Android 15对应API 34
                }
            }
        }
    }
    

    -DANDROID_USE_LEGACY_HASH=ON会强制生成DT_HASH而非新的哈希类型,避免Android 15加载器报错。

  • 临时绕过ReLinker(可选)
    若升级Realm后仍有加载问题,可尝试直接加载库而非使用ReLinker:
    在自定义Application类中添加静态代码块:

    static {
        try {
            System.loadLibrary("realm-jni");
        } catch (UnsatisfiedLinkError e) {
            // 可选的降级逻辑
        }
    }
    

    同时排除ReLinker依赖:

    implementation('io.realm:realm-android:10.19.0') {
        exclude group: 'com.getkeepsafe.relinker'
    }
    

问题根源

错误提示的empty/missing DT_HASH/DT_GNU_HASH是因为:

  1. Android 15引入了16KB页面大小支持,NDK r27默认生成的SO文件使用了新的哈希扩展类型
  2. Realm 10.18.0未适配Android 15的灵活页面特性,且配套的ReLinker无法识别新哈希格式,导致SO加载失败

内容的提问来源于stack exchange,提问作者vjimbei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:42:14