Solução de problemas - SDK Java
Uso em aplicativos do sistema em ROMs Android personalizadas
Os SDKs do Atlas Device usam pipes nomeados para oferecer suporte a notificações e acesso ao Arquivo de Realm de vários processos. Embora isso seja permitido por padrão para aplicativos de usuário normais, não é permitido para aplicativos do sistema.
Os aplicativos do sistema são definidos configurando android:sharedUserId="android.uid.system"
no manifesto do Android. Para aplicativos do sistema, você pode ver uma violação de segurança no Logcat com a seguinte aparência:
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
Para corrigir isso, é necessário ajustar as regras de segurança do SELinux na ROM. Isto pode ser feito utilizando a ferramenta audit2allow
. Esta ferramenta é fornecida como parte do AOSP.
Puxe a política atual do dispositivo:
adb pull /sys/fs/selinux/policy
.Copie o erro SELinux dentro de um arquivo de texto chamado
input.txt
.Execute a ferramenta
audit2allow
:audit2allow -p policy -i input.txt
.A ferramenta deve gerar uma regra que você possa adicionar à sua política existente. A regra permite acessar o arquivo Realm a partir de vários processos.
audit2allow
é produzido ao compilar AOSP/ROM e é executado apenas no Linux. Confira os detalhes na documentação do Android Source. Observe também que, desde o Android Oreo, o Google mudou a forma de configurar o SELinux e as políticas de segurança padrão agora são mais modularizadas. Mais detalhes estão na documentação de origem do Android.