【问题标题】:Socket IO not working Android 8.0 due to SELinux由于 SELinux,Socket IO 无法在 Android 8.0 上运行
【发布时间】:2018-10-23 10:33:42
【问题描述】:

在 Android 上使用 socketIO 时出现错误

W/TcmReceiver: type=1400 audit(0.0:136495): avc: denied { write } for name="tcm" dev="tmpfs" ino=30445 scontext=u:r:untrusted_app:s0:c242,c256,c512,c768 tcontext=u:object_r:dpmtcm_socket:s0 tclass=sock_file permissive=0

安卓代码:

socket = IO.socket("http://192.168.0.101:3000");
socket.connect();

经过一些研究,它似乎与 Android 中 SELinux 强制执行的访问权限有关。这会导致 SocketIO 库中的底层套接字无法打开或读取。

作为注释 我确实启用了 Internet 权限。所以这似乎不是问题

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

有什么解决办法吗?

【问题讨论】:

  • 您能详细说明您提到的一些研究吗?这听起来不对。
  • 进一步证据:this question。如果您在服务器上运行 Wireshark,您会看到什么?

标签: android sockets socket.io selinux


【解决方案1】:

唯一已知的解决方案是禁用它或在将您的应用列入白名单以允许访问“IO.socket”后重新构建 ROM(该白名单文件在构建操作后无法修改)

【讨论】:

  • 这是否意味着现在不能使用任何类型的直接套接字操作来构建应用程序?我的想法是使用 TCP 套接字将消息发送到服务器以减少 http 进程和有效负载。该应用程序几乎可以处理实时数据。这在 Android 应用中不再可能了吗?
猜你喜欢
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 2020-07-08
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多