トラブルシューティング - Kotlin SDK
iOS/IP OS が無効な割り当て/メモリが不足しています
使用可能なメモリがほとんどない 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 ROM 上のシステム アプリで を使用する
Atlas Device SDK は、通知をサポートし、複数のプロセスからの Realm ファイルにアクセスするために、名前付きパイプを使用します。 これは通常のユーザー アプリではデフォルトで許可されていますが、システム アプリでは許可されていません。
システムアプリは、Android マニフェストでandroid:sharedUserId="android.uid.system"
を設定することによって定義されます。 システム アプリの場合、Logcat には次のようなセキュリティ違反が表示される場合があります。
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
これを修正するには、ROM 内の SELinux セキュリティ ルールを調整する必要があります。 これは、ツールaudit2allow
を使用して実行できます。 このツールは AOSP の一部として提供されています。
デバイスから現在のポリシーを取得します:
adb pull /sys/fs/selinux/policy
。SELinux エラーを
input.txt
というテキストファイル内にコピーします。audit2allow
ツールを実行します:audit2allow -p policy -i input.txt
。ツールは、既存のポリシーに追加できるルールを出力します。 このルールにより、複数のプロセスから Realm ファイルにアクセスできます。
audit2allow
は AOSP/ROM をコンパイルするときに生成され、Linux でのみ実行されます。 Android ソースのドキュメント で詳細を確認してください 。また、Android または 以降、Google は SELinux の構成方法を変更し、デフォルトのセキュリティ ポリシーがよりモジュール化されている点にも注意してください。 詳しくは、 Android ソースのドキュメント を参照してください。