1***@qq.com
1***@qq.com
  • 发布:2026-08-20 14:37
  • 更新:49 分钟前
  • 阅读:54

【Bug】联迪 A8s(盛付通 Android 10 POS 机)ROM 的 SELinux 策略导致 uni-app 白屏,weex 多进程引擎初始化失败

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11, version 25H2

HBuilderX类型: 正式

HBuilderX版本号: 5.24

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: pos机A8s

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

关键日志(logcat,多次复现):avc: denied { setattr } for name="libweexjsb.so" dev="mmcblk0p44" scontext=u:r:untrusted_app tcontext=u:object_r:apk_data_file:s0 tclass=file permissive=0
WeexCore: jsengine#weexcore fork child succes!
WeexCore: IPCException server spinWaitPeer timeout
WeexCore: JSFramwork init start sender is null
weex: [WXBridgeManager] invokeInitFramework ExecuteJavaScript fail
weex: framework.js uninitialized

预期结果:

关键日志(logcat,多次复现):avc: denied { setattr } for name="libweexjsb.so" dev="mmcblk0p44" scontext=u:r:untrusted_app tcontext=u:object_r:apk_data_file:s0 tclass=file permissive=0
WeexCore: jsengine#weexcore fork child succes!
WeexCore: IPCException server spinWaitPeer timeout
WeexCore: JSFramwork init start sender is null
weex: [WXBridgeManager] invokeInitFramework ExecuteJavaScript fail
weex: framework.js uninitialized

实际结果:

关键日志(logcat,多次复现):avc: denied { setattr } for name="libweexjsb.so" dev="mmcblk0p44" scontext=u:r:untrusted_app tcontext=u:object_r:apk_data_file:s0 tclass=file permissive=0
WeexCore: jsengine#weexcore fork child succes!
WeexCore: IPCException server spinWaitPeer timeout
WeexCore: JSFramwork init start sender is null
weex: [WXBridgeManager] invokeInitFramework ExecuteJavaScript fail
weex: framework.js uninitialized

bug描述:

云打包 APK 安装到联迪 A8s(Android 10,盛付通定制 ROM)后白屏,仅显示原生 tabBar,所有页面空白。同一 APK 在普通安卓手机和旧版 POS 机上正常。avc: denied { setattr } for name="libweexjsb.so" dev="mmcblk0p44" scontext=u:r:untrusted_app tcontext=u:object_r:apk_data_file:s0 tclass=file permissive=0
WeexCore: jsengine#weexcore fork child succes!
WeexCore: IPCException server spinWaitPeer timeout
WeexCore: JSFramwork init start sender is null
weex: [WXBridgeManager] invokeInitFramework ExecuteJavaScript fail
weex: framework.js uninitialized
weex 多进程引擎将 libweexjsb.so 解压到应用 cache 目录后需 chmod(setattr),被该 ROM 的 SELinux 策略拒绝,子进程初始化失败,父进程握手超时,整个 JS 运行时不可用。 诉求:1)提供 weex 单进程模式开关(日志中 getUseSingleProcess 显示该开关存在);或 2)将 libweexjsb.so 直接放入 APK lib 目录加载,避免解压到 cache。 同类未决问题:ask.dcloud.net.cn/question/193822(2024 年,同型号设备,Wap2App 同样失败)请提供 Android 离线 SDK 2.9.8 下载链接,用于 v2 编译器离线打包验证此问题

2026-08-20 14:37 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

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

感谢您提交的 Bug 反馈。从 DCloud 官方视角的评审与分析如下:

一、 Bug 反馈内容完整性评审

  1. BUG 描述:非常清晰且专业。您准确提取了 avc: deniedIPCException 等关键报错,并推断出是 SELinux 策略拒绝了 libweexjsb.sochmod(setattr)操作,导致子进程初始化失败、父进程握手超时。诉求明确,还关联了同型号设备的未决问题,逻辑链条完整,官方人员能够直接看懂并定位方向。
  2. 代码示例:缺失。由于该问题属于特定 ROM 下的底层引擎运行环境问题,通常不需要前端业务代码即可复现。但为了确保排查的准确性,建议您补充一个最简的 uni-app 空白工程打包后的测试结果,以排除业务代码导致 OOM 等其他白屏因素的干扰。
  3. 复现步骤:描述清晰,结合提供的 logcat 日志,官方人员可以判断出复现路径。但由于联迪 A8s 盛付通定制 ROM 属于特定设备,官方测试环境可能缺乏同款机型,后续若官方需要深入排查,可能需要您协助提供设备或进行更多底层日志的抓取。
  4. 预期结果与实际结果:判断合理。预期应用正常显示,实际白屏且仅显示原生 tabBar,符合 JS 运行时彻底崩溃的表现,并非误报。
  5. 分类信息:完整。包含了 HBuilderX 5.24 正式版、Android 10、Vue2 以及具体设备机型等关键信息。
  6. 附件说明:我无法识别附件,如果后续需要提供截图或日志文件,请直接将内容以文本形式粘贴在回复中。

二、 Bug 是否成立及分析依据

根据您提供的日志,该 Bug 现象在知识库中已有相似记录。在 ask 社区知识库中,存在与您反馈高度一致的日志特征:
avc: denied { execute_no_trans } for path=".../cache/cache/weex/libs/libweexjsb.so",以及 IPCException server spinWaitPeer timeoutJSFramwork init start sender is null(详见 DCloud问答_103768)。

这印证了您的分析:在部分定制 ROM 或特定 Android 环境下,系统的 SELinux 策略会拒绝存放在应用 cache 目录下的动态库(so 文件)执行权限变更或加载操作。由于 uni-app(js 引擎版)的 Weex 多进程引擎需要将 libweexjsb.so 解压到 cache 目录并赋予执行权限,一旦被 SELinux 拦截,多进程通信就会断开,导致 JS 运行时不可用,从而引发白屏。

关于您的诉求与替代方案:

  1. weex 单进程模式开关:您在日志中观察到的 getUseSingleProcess 确实存在。在 uni-app 的离线打包配置或部分底层 SDK 中,存在切换为单进程模式的机制。单进程模式下,JS 引擎不需要通过 fork 子进程和跨进程通信来加载 so 文件,从而可以绕过严格的 SELinux 多进程文件权限拦截。但在 uni-app 云打包/标准项目中,暂未在知识库中找到直接面向用户开放配置该开关的 manifest.json 节点说明。
  2. 将 so 文件直接放入 APK lib 目录:您提出的诉求非常合理。如果 so 文件随 APK 安装直接释放到系统的 lib 目录下,其默认权限即可满足加载需求,无需再在运行时解压到 cache 并进行 chmod。这需要官方在引擎的底层打包和加载逻辑上进行调整。

总结:
该 Bug 反馈成立,分析依据充分。您的诉求(提供单进程开关或调整 so 文件加载路径)是从根本上解决定制 ROM SELinux 限制的有效方向。建议您持续关注官方对该 Issue 的处理进度,若官方需要进一步排查,可配合提供最简复现工程。

内容为 AI 生成,仅供参考
1***@qq.com

1***@qq.com (作者)

请提供 Android 离线 SDK 2.9.8 下载链接,用于 v2 编译器离线打包验证此问题

要回复问题请先登录注册