Docs Menu
Docs Home
/ /
SDK de Flutter

Solución de problemas - SDK de Flutter

Si estás desarrollando con el Realm Flutter SDK en el Sandbox de la aplicación de macOS, las solicitudes de red no funcionan por defecto debido a las configuraciones de seguridad incorporada en macOS. Se requiere acceso a la red para usar Atlas App Services y Device Sync.

Para habilitar solicitudes de red, agregue el siguiente código a los archivos macos/Runner/DebugProfile.entitlements macos/Runner/Release.entitlementsy:

<!-- Other entitlements -->
<key>com.apple.security.network.client</key>
<true/>
<!-- Other entitlements -->

Aún puedes usar Realm localmente sin agregar este permiso de acceso a la red.

Para obtener más información sobre el desarrollo de Flutter para macOS, consulte Creación de aplicaciones macOS con Flutter en la documentación de Flutter.

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/>

Para usar App Services con el SDK de Realm en un dispositivo que usa Android 7 o una versión anterior, debe agregar un cliente HTTP con un certificado de cifrado de seguridad de la capa de transporte (TLS) Let's Encrypt personalizado a App.

Esto se debe a un problema conocido al usar Flutter en dispositivos con Android 7 o versiones anteriores para conectarse a servidores web que usan certificados TLS de Let's Encrypt. Dado que el servidor de App Services usa un certificado TLS de Let's Encrypt, debes agregar el certificado personalizado.

Puede descargar elcertificado Let's Encrypt para agregarlo a su aplicación haciendo clic en este enlace: https://letsencrypt.org/certs/lets-encrypt-r.pem3

Para configurar el cliente HTTP personalizado, adapte el siguiente ejemplo de código a su aplicación.

import 'package:realm_dart/realm.dart';
import "dart:io";
import "dart:convert";
IOClient createCustomHttpsClient(String cert) {
SecurityContext context = SecurityContext.defaultContext;
try {
final bytes = utf8.encode(cert);
context.setTrustedCertificatesBytes(bytes);
} on TlsException catch (e) {
final message = e.osError?.message ?? "";
if (!message.contains('CERT_ALREADY_IN_HASH_TABLE')) {
rethrow;
}
}
return IOClient(HttpClient(context: context));
}
App createAppWithCustomHttpsClient(
String letsEncryptCertificate, String appId) {
IOClient ioClient = createCustomHttpsClient(letsEncryptCertificate);
final appConfig = AppConfiguration(appId, httpClient: ioClient);
return App(appConfig);
}
final letsEncryptCertificate = "<LET'S ENCRYPT CERTIFICATE>";
final appId = "<YOUR APP ID>";
final app = createAppWithCustomHttpsClient(letsEncryptCertificate, appId);

Volver

Transmitir datos a Atlas

En esta página