Docs Menu
Docs Home
/ /
Kotlin SDK

Resolución de problemas - Kotlin SDK

En dispositivos iOS o iPad con poca memoria disponible, o donde tienes una aplicación que consume mucha memoria y utiliza varios reinos o muchas notificaciones, es posible que encuentres el siguiente error:

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

Este error generalmente indica que no se puede asignar un recurso porque no hay suficiente memoria disponible.

Si está compilando para iOS 15+ o iPad 15+, puede agregar el Derecho de direccionamiento virtual extendido para resolver este problema.

Agregue estas claves a su Lista de propiedades y configure los valores en true:

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

Los SDK de dispositivos Atlas utilizan canalizaciones con nombre para admitir notificaciones y acceder al archivo Realm desde múltiples procesos. Si bien esto está permitido por defecto para las aplicaciones de usuario normales, no está permitido para las aplicaciones del sistema.

Las aplicaciones del sistema se definen mediante la configuración android:sharedUserId="android.uid.system" en el manifiesto de Android. En el caso de las aplicaciones del sistema, es posible que veas una infracción de seguridad en Logcat similar a esta:

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 solucionar esto, debe ajustar las reglas de seguridad de SELinux en la ROM. Esto se puede hacer con la audit2allow herramienta. Esta herramienta forma parte de AOSP.

  1. Extraiga la política actual del dispositivo: adb pull /sys/fs/selinux/policy.

  2. Copie el error de SELinux dentro de un archivo de texto llamado input.txt.

  3. Ejecute la herramienta audit2allow: audit2allow -p policy -i input.txt.

  4. La herramienta debería generar una regla que puede agregar a su política existente. Esta regla le permite acceder al archivo Realm desde múltiples procesos.

audit2allow Se genera al compilar AOSP/ROM y solo se ejecuta en Linux. Consulta los detalles en la documentación de Android Source. También ten en cuenta que, desde Android Oreo, Google cambió la configuración de SELinux y las políticas de seguridad predeterminadas ahora están más modularizadas. Más detalles en la documentación de Android Source.

Volver

Registro

En esta página