トラブルシューティング - Java SDK
カスタム 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 ソースのドキュメント を参照してください。