Docs Menu
Docs Home
/ /
Atlas Device SDK
/

トラブルシューティング - Flutter SDK

項目一覧

  • macOS App Sandbox での Realm の使用
  • iOS/IP OS が無効な割り当て/メモリが不足しています
  • Android 7 以前を使用した App Services への接続

macOS App Sandbox で Realm Flutter SDK を使用して開発している場合、組み込みの macOS セキュリティ設定により、ネットワーク リクエストはデフォルトでは機能しません。 Atlas App Services と Device 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 または IP デバイス、または複数の Realm や多数の通知を使用するメモリ集中型のアプリケーションでは、次のエラーが発生する可能性があります。

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

このエラーは通常、十分なメモリが利用できないため、リソースを割り当てることができないことを示します。

iOS15 + または iOS15 + 用にビルドしている場合は、 拡張仮想アドレス指定権限 を追加できます この問題を解決するには、 を使用します。

これらのキーをプロパティ リストに追加し、値を 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 を使用するには、カスタム lets Encrypt トランスポート層セキュリティ(TLS)暗号化証明書を持つ HTTP クライアントをAppに追加する必要があります。

これは、Android 7 以降を実行しているデバイスで Flutter を使用して、 let の暗号化 TLS 証明書を使用するウェブ サーバーに接続する既知の問題によるものです。 App Services サーバーは let の暗号化 TLS 証明書を使用するため、カスタム証明書を追加する必要があります。

次のリンクをクリックすると、アプリに追加する let s Encrypt 証明書をダウンロードできます。 https://lets-encrypt.org/certs/lets-encrypt-r3 .pem

カスタム 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 へのデータのストリーム