Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/

故障排除 - Java SDK

在此页面上

  • 在自定义 Android ROM 上的系统应用中使用

Atlas Device SDK 使用命名管道来支持通知以及从多个进程访问权限Realm 文件。 虽然普通用户应用程序默认允许这样做,但系统应用程序不允许这样做。

系统应用是通过在 Android 清单中设置 android:sharedUserId="android.uid.system"来定义的。 对于系统应用,您可能会在 Logcat 中看到如下所示的安全违规:

05-24 14:08:08.984 6921 6921 W .realmsystemapp: type=1400 audit(0.0:99): avc: denied { write } for name="realm.testapp.com.realmsystemapp-Bfqpnjj4mUvxWtfMcOXBCA==" dev="vdc" ino=14660 scontext=u:r:system_app:s0 tcontext=u:object_r:apk_data_file:s0 tclass=dir permissive=0
05-24 14:08:08.984 6921 6921 W .realmsystemapp: type=1400 audit(0.0:100): avc: denied { write } for name="realm.testapp.com.realmsystemapp-Bfqpnjj4mUvxWtfMcOXBCA==" dev="vdc" ino=14660 scontext=u:r:system_app:s0 tcontext=u:object_r:apk_data_file:s0 tclass=dir permissive=0

要解决此问题,您需要调整 ROM 中的 SELinux 安全规则。这可以通过使用工具audit2allow 来完成。此工具作为 AOSP 的一部分提供。

  1. 从设备中拉取当前策略: adb pull /sys/fs/selinux/policy

  2. 将 SELinux 错误复制到名为input.txt的文本文件中。

  3. 运行audit2allow工具: audit2allow -p policy -i input.txt

  4. 该工具应输出一条规则,您可以将其添加到现有策略中。 该规则允许您从多个进程访问 Realm 文件。

audit2allow 在编译 AOSP/ROM 时生成,并且只能在 Linux 上运行。 查看 Android 源文档 中的详细信息 。另请注意,自 Android Oreo 以来,Google 改变了配置 SELinux 的方式,默认安全策略现在更加模块化。 更多详细信息,请参阅 Android 源文档。

后退

故障排除