Попытка открыть выходной файл внутри аудиофлингера (AOSP)

Я пытаюсь написать простой файл журнала из av/services/audioflinger/AudioStreamOut.cpp для тестирования собственного ПЗУ. Мне нужно, чтобы он работал на Nexus 5X (подкаменщик).

if (logFile1 == NULL)
    logFile1 = fopen("/sdcard/log_before.pcm", "ab");


if (logFile1 == NULL)
    ALOGE("can't open 1, errno %d", errno);

Я получаю разрешение отказано (ERRNO 13).

Я попытался изменить frameworks/base/data/etc/platform.xml, добавив следующее:

<assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="media" />
<assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="audioserver" />
<assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="audio" />

Все еще без изменений. Как я могу заставить это работать? Или есть другое место в файловой системе, где системная служба, такая как аудиофлингер, должна использовать для записи файлов?

ОБНОВИТЬ:

Я только что нашел решение, которое работает для эмулятора - в Android N напишите /data/misc/audioserver.

Когда я использую оболочку ADB, она показывает, что в этой конкретной папке есть группа "audioserver", поэтому она работает.

Об этой папке я узнал по этой ссылке: https://source.android.com/devices/audio/debugging.html

Но эта папка кажется недоступной на Nexus 5X - не может получить к нему доступ с помощью оболочки, даже с su root.

1 ответ

Решение

Я нашел способ разрешения проблемы.

Сначала запишите файл журнала в /data/misc/audioserver

Затем:

adb shell su root cp /data/misc/audioserver/log_before.pcm sdcard/.

И т.п.

И тогда я могу вытащить файл:

adb pull /sdcard/log_before.pcm .
Другие вопросы по тегам