Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method namespace() for arguments [com.dawn] on object of type com.android.build.gradle.LibraryExtension.

adb shell setenforce 0 还是会报错library "/system/lib64/libmipha.so" ("/system/lib64/libmipha.so") needed or dlopened by "/apex/com.android.art/lib64/libnativeloader.so" is not accessible for the namespace: [name="clns-4", ld_library_paths="", default_library_paths="/data/app/~~MpQzp4gUYh9WwLeXZMk75g==/com.mipha.ScanDemo-Xr8OpAqdKu2yyJCfexQnAg==/base.apk!/lib/arm64-v8a", permitted_paths="/data:/mnt/expand:/data/user/0/com.mipha.ScanDemo"]

你执行了 adb shell setenforce 0,但仍然报如下错误:


vbnet

CopyEdit

library "/system/lib64/libmipha.so" ... is not accessible for the namespace: ...

说明 问题不是 SELinux 引起的,而是linker namespace(链接命名空间)隔离机制的问题。


✅ 根本原因:linker namespace 隔离

Android 7.0 (API 24) 引入了 linker namespace,用于限制 app 只能访问自己目录下或者系统允许的 .so 文件路径。

即使:

  • 你是 system uid

  • 已设置 setenforce 0

  • 使用平台签名

👉 如果你通过 adb install 安装的 APK 是在 /data/app/ 路径下运行,那么:

它就会被限制在 default linker namespace(如 clns-4),这个 namespace 禁止访问 /system/lib64/libmipha.so

你报错中的这一段也明确说明了:


ini

CopyEdit

default_library_paths="/data/app/.../base.apk!/lib/arm64-v8a", permitted_paths="/data:/mnt/expand:/data/user/0/com.mipha.ScanDemo"

🧨 并不包含 /system/lib64/vendor/lib64,所以会报错。


✅ 正确解决方式

✅ 1. 不要用 adb install

必须将 APK 放回系统分区安装,比如:


bash

CopyEdit

adb root adb remount adb push ScanDemo.apk /system/priv-app/ScanDemo/ScanDemo.apk adb reboot

系统启动时,它会作为系统应用运行,进入 system linker namespace,此时才允许访问 /system/lib64/libmipha.so

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐