Docs Menu
Docs Home
/ /
Atlas Device SDK
/

문제 해결 - Flutter SDK

이 페이지의 내용

  • macOS 앱 Sandbox로 Realm 사용하기
  • iOS/iPad OS 할당 불량/사용 가능한 메모리 부족
  • Android 7 이상을 사용하여 App Services에 연결

macOS 앱 Sandbox에서 Realm Flutter SDK로 개발하는 경우 내장된 macOS 보안 설정으로 인해 네트워크 요청이 기본적으로 작동하지 않습니다. Atlas App Services 및 Realm Mobile Sync를 사용하려면 네트워크 액세스가 필요합니다.

네트워크 요청을 활성화하려면 macos/Runner/DebugProfile.entitlementsmacos/Runner/Release.entitlements 파일 모두 에 다음 코드를 추가합니다.

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

이 네트워크 액세스 권한을 추가하지 않고도 로컬에서 Realm을 사용할 수 있습니다.

macOS용 Flutter 개발에 대한 자세한 내용은 Flutter로 macOS 앱 빌드 를 참조하세요. Flutter 문서에서 확인할 수 있습니다.

메모리가 부족한 iOS 또는 iPad 장치나 다수의 영역 또는 많은 알림을 사용하는 메모리 집약적인 애플리케이션을 사용하는 경우 다음과 같은 오류가 발생할 수 있습니다.

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

이 오류는 일반적으로 사용 가능한 메모리가 부족하여 리소스를 할당할 수 없음을 나타냅니다.

iOS + 또는 iPad +용으로 빌드하는 경우 확장 15 15 가상 주소 지정 권한 을 추가할 수 있습니다. 을(를) 클릭하여 이 문제를 해결하세요.

다음 키를 속성 목록에 추가하고 값을 true 으)로 설정합니다.

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

Android 7 이하를 사용하는 기기에서 Realm SDK와 함께 App Services를 사용하려면 사용자 지정 Let's Encrypt TLS(전송 계층 보안) 암호화 인증서를 사용하여 HTTP 클라이언트를 App 에 추가해야 합니다.

이는 Android 7 이전 버전을 실행하는 기기에서 Flutter를 사용하여 Let's Encrypt TLS 인증서를 사용하는 웹 서버에 연결하는 알려진 문제 때문입니다. App Services 서버는 Let's Encrypt TLS 인증서를 사용하므로 사용자 지정 인증서를 추가해야 합니다.

다음 링크를 클릭하여 Let's 인증서를 다운로드하여 앱에 추가할 수 있습니다. 3

사용자 지정 HTTP 클라이언트를 설정하려면 다음 코드 예시를 앱에 맞게 조정하세요.

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);

돌아가기

Atlas로 데이터 스트리밍