LocalSocket socket = new LocalSocket();
LocalSocketAddress addr = new LocalSocketAddress("netcontrol",
LocalSocketAddress.Namespace.RESERVED);
socket.connect(addr);
socket.close();
本地服务端已经配好,android5.1上,找不到原因,哪位大神帮个忙
android localsocket 连接本地socket报Permission denied异常
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答
- TaylorPotter 2017-08-06 04:10关注
发现了,加在apk中加读写权限也没用,这是selinux问题,android5.0开始强制使用SElinux限制,
简单验证可以关掉selinux再试就ok了:
adb shell setenforce 0楼主的本地服务应该是在dev/socket下生成一个socket文件
而应用进程去访问这个文件时会受到selinux的限制,没有权限访问,
终端下搜所log,adb logcat -b all | grep "avc: denied"
会发现每次connect都会出现类似如下的log,我在dev/socket下的sockect文件名字是socket_test
08-06 11:44:35.300 24901 24901 I auditd : type=1400 audit(0.0:1397): avc: denied { write } for comm="Thread-19" name="socket_test" dev="tmpfs" ino=14956 scontext=u:r:system_app:s0 tcontext=u:object_r:socket_device:s0 tclass=sock_file permissive=0
因此这里就需要配置sepolicy了,在system/sepolicy 下新建.te文件,或者在某个te文件中添加对应的selinux权限,
这里针对上面的deniedlog我需要配置,后面还出现其他限制原因,都要配置上allow system_app socket_device:sock_file{ write }
然后编bootimage 烧录验证;
搜了半天互联网,没有确切回复,在stackflow上有类似的回复,突然想到可能是selinux问题,写详细点,希望后面有人搜索方便点。
https://stackoverflow.com/questions/31012443/android-localsocket-client-cant-connect-to-native-service-socket-in-abstract-na解决 10无用
悬赏问题
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿