Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/

Solução de problemas - Kotlin SDK

Nesta página

  • Alocação incorreta do sistema operacional iOS/iPad/memória insuficiente disponível
  • Uso em aplicativos do sistema em ROMs Android personalizadas

Em dispositivos iOS ou iPad com pouca memória disponível, ou quando você tiver um aplicativo com uso intensivo de memória que utilize vários realms ou muitas notificações, poderá encontrar o seguinte erro:

libc++abi: terminating due to an uncaught exception of type std::bad_alloc: std::bad_alloc

Esse erro normalmente indica que um recurso não pode ser alocado porque não há memória suficiente disponível.

Se estiver desenvolvendo para iOS 15+ ou iPad 15+, você pode adicionar o Extended Virtual Addressing Entitlement para resolver este problema.

Adicione estas chaves à sua Lista de propriedades e defina os valores para true:

<key>com.apple.developer.kernel.extended-virtual-addressing</key>
<true/>
<key>com.apple.developer.kernel.increased-memory-limit</key>
<true/>

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 pela configuração 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. Essa ferramenta é fornecida como parte do AOSP.

  1. Puxe a política atual do dispositivo: adb pull /sys/fs/selinux/policy.

  2. Copie o erro SELinux dentro de um arquivo de texto chamado input.txt.

  3. Execute a ferramenta audit2allow : audit2allow -p policy -i input.txt.

  4. 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.

Voltar

Exploração madeireira