skylankong
skylankong
  • 发布:2026-03-01 22:17
  • 更新:2026-03-02 02:23
  • 阅读:181

【报Bug】编译后lib目录里的lib39285EFA.so提示未正确处理16KB Page Size页面大小

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 4.87

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: Android

手机系统版本号: Android 16

手机厂商: 模拟器

手机机型: android 16

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

打包H5项目或者uniapp项目,在lib中都会出现

预期结果:

应该不影响APP在16KB Page Size的设备中运行

实际结果:

APP闪退,报错都是提示这个文件有问题。使用 zipalign -f -P 16 -v 4 your-app.apk aligned.apk验证,提示没有问题,使用AS的验证APK也没有问题,在模拟器里闪退,并报错。

bug描述:

这个lib39285EFA.so是什么库文件?打包了2个APP都出现了它,在一个项目只选择了低功耗蓝牙,另一个APP没有选择任何模块,2个APP也没有包含任何第三方的模块。图片截图是跟踪模拟器的报错信息。
Trea的提示
这是 同一个 16KB Page Size 兼容性问题 ,只是应用实例不同(现在是 uni.app.UNI6B41014 )。

问题分析:

  • 错误类型 : SIGSEGV (SEGV_ACCERR) - 段错误
  • 崩溃库 : lib39285EFA.so
  • 页面大小 :16384 字节 (16KB)
  • 架构 : arm64
2026-03-01 22:17 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

作为 DCloud 官方评审人员,对该 bug 反馈进行如下评审:


一、反馈完整性评估

检查项 评估结果
BUG 标题 明确指出了“lib39285EFA.so”与“16KB Page Size”问题,具备关键词。
BUG 描述 描述了现象(闪退、SIGSEGV)、架构(arm64)、页面大小(16KB),但未说明该 so 的来源或用途。
代码示例 无代码示例,无法判断是否为用户代码问题。
复现步骤 描述为“打包H5项目或uniapp项目都会出现”,过于笼统,未提供具体操作路径。
预期结果 合理:希望不影响在16KB设备运行。
实际结果 合理:闪退,报错指向 lib39285EFA.so。
分类信息 提供了完整的环境信息(HBuilderX 4.87、Android 16、Vue3、模拟器)。

结论:该反馈信息基本完整,但缺少关键细节

  • 未说明是否使用了某些模块(如蓝牙、地图、广告等);
  • 未提供最小复现 demo 或 manifest.json 配置;
  • 未说明是否使用了云打包或离线打包;
  • 未说明是否使用了自定义原生插件或第三方 SDK。

二、Bug 是否成立

根据知识库内容:

  • 16KB Page Size 适配问题确实存在,且已在 HBuilderX 4.81+ 中修复;
  • lib39285EFA.so 并非官方核心库名,可能是插件或第三方 SDK 自动生成;
  • 模拟器闪退可能是由于某些 so 未适配 16KB;
  • 用户使用的是 HBuilderX 4.87(正式版),但知识库中明确指出:

    “HBuilderX 4.81版本已适配支持 16KB 内存页面大小”

结论Bug 成立,但可能是用户项目中引入了未适配 16KB 的模块或插件,而非 uni-app 核心框架问题。


三、是否为基本概念误用或误报

  • ❌ 非基本概念误用;
  • ❌ 非误报;
  • ⚠️ 可能是用户未清理缓存或使用了旧版本插件,建议用户:
    • 升级至 HBuilderX 4.82 alpha 或 5.0 alpha
    • 检查是否使用了如下未适配 16KB 的模块
    • uni-ad(国内广告 SDK)
    • 友盟统计
    • uni实人认证
    • Fresco 图像库旧版本(如 libgifimage.so、libimagepipeline.so)

四、官方建议回复(基于知识库)

您好,感谢您的反馈。

根据知识库记录,lib39285EFA.so 并非 uni-app 官方核心库,可能是某些插件或第三方 SDK 自动生成的 so 文件。

从 HBuilderX 4.81 起,官方已全面适配 Android 16KB Page Size 要求,但部分第三方模块仍未适配,例如:

  • uni-ad(国内广告 SDK)
  • 友盟统计
  • uni实人认证
  • Fresco 图像库旧版本(如 libgifimage.so)

建议您:

  1. 升级至 HBuilderX 5.0 alpha(最新版本);
  2. 检查 manifest.json 中是否启用了上述模块;
  3. 若未使用上述模块,请提供最小复现 demo 或 manifest.json 配置,以便进一步定位;
  4. 若使用了自定义插件,请确认插件是否已适配 16KB。

参考文档:Android 16KB 页面大小适配指南

如仍有疑问,请补充复现 demo 或打包日志,我们将继续跟进。

内容为 AI 生成,仅供参考
skylankong

skylankong (作者)

如何提供相关文件, 比较大,我可以把业务代码删掉,只保留框架给你们检查。

skylankong

skylankong (作者)

这个是最新的截图,删掉了32位Lib,只保留了64位的。在AS模拟器Pixel9 安卓16 的Pre-Release 16 Kb Page Size那个镜像。

skylankong

skylankong (作者)

lib39285EFA.so 使用了 memfd 机制

  • memfd 是 Linux 的内存文件描述符
  • 用于在内存中创建匿名文件,常用于 JIT 编译、动态代码加载等
  • 在 16KB Page Size 环境下,memfd 的内存分配也需要 16KB 对齐
  • 运行时内存分配问题

  • HBuilderX 的 lib39285EFA.so 可能在运行时:
    • 使用 JIT 编译生成代码
    • 动态加载某些模块到内存
    • 使用 mmap 映射内存
  • 这些动态分配的内存没有正确对齐到 16KB 边界
    • 崩溃位置 : /memfd:exec (deleted) - 动态内存区域
  • 触发源 : lib39285EFA.so 的 String::String() 构造函数
  • 根本原因 :HBuilderX 运行时库在 16KB Page Size 环境下的内存对齐 bug
skylankong

skylankong (作者)

新的崩溃分析:

崩溃库 : libweexjs.so (Weex JS 引擎库) 错误 : Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR) 位置 : /data/app/.../lib/arm64/libweexjs.so

关键发现:

你的 APK 中有 多个 native 库 存在 16KB Page Size 兼容性问题:

  1. lib39285EFA.so - HBuilderX 核心运行时库
  2. libweexjs.so - Weex JS 引擎库
skylankong

skylankong (作者)

OAID
OAID目前使用的 SDK 版本为 1.0.25或1.0.13,更高版本需要申请证书,暂时无计划更新。此功能在生成 Google Play 渠道包时默认不包含。

离线打包时默认包含此SDK,如果需要上架 Google Play,可以直接删除库msa_mdid_1.0.13.aar和oaid_sdk_1.0.25.aar。

涉及的so库文件列表:

libsecsdk.so
lib39285EFA.so

https://uniapp.dcloud.net.cn/tutorial/android-16kb.html#oaid

是这个问题吗?测试需要先打包aab,再换砖为apk?

要回复问题请先登录注册