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

Android应用开发:SELinux阻止文件读取权限问题求助

问题分析

你碰到的SELinux拦截不是因为读取Main.class文件,而是OpenJDK 17启动时默认开启容器支持,尝试读取/proc/cgroups节点,但Android的untrusted_app SELinux域禁止普通应用访问该节点,才触发了avc拒绝日志。

解决步骤
  1. 禁用JVM的容器支持
    在调用loadJVM时添加-XX:-UseContainerSupport参数,阻止JVM尝试读取cgroups相关信息:
JREUtils.loadJVM("java", "-Xmx512M", "-Xms512M", "-XX:-UseContainerSupport", "/data/user/0/com.example.myapplication/cache/Main.class");
  1. 确认class文件权限(额外检查)
    虽然本次错误与class文件无关,但可确认权限是否正常:app对自身cache目录默认拥有读写权限,也可通过代码手动设置:
File mainClassFile = new File(getCacheDir(), "Main.class");
mainClassFile.setReadable(true, false);
mainClassFile.setWritable(true, true);
  1. 参考PojavLauncher的进阶处理(可选)
    PojavLauncher通过单独进程运行JVM,并调整进程SELinux上下文(需系统签名或root权限),若你的应用无法获取特殊权限,使用方案1即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:42:16