Почему `diag_mdlog` не может писать в` / sdcard`, если он запускается из приложения Android, имеющего разрешения на запись? - PullRequest
0 голосов
/ 20 января 2020

Я получаю странное поведение с diag_mdlog исполняемым файлом. Я выполняю его из моего Android приложения как

su - c / vendor / bin / diag_mdlog -o / sdcard / ab c -f /sdcard/Test.cfg

Проблема:

  • , если приложение android предоставило android.permission.READ_EXTERNAL_STORAGE или android.permission.WRITE_EXTERNAL_STORAGE, то оно завершает свою работу с ошибкой запрещенных разрешений в виде следующих журналов:
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag_mdlog: command = o
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag_mdlog: command = f
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag: No Session is active for the given mask
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag_mdlog: Error creating: /sdcard/abc, errno: 13
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag_mdlog: Attempting to use default directory
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag:In main failed to create xml file
01-20 17:56:35.403 19087 19087 E Diag_Lib:
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag_mdlog: Continuing with default directory path /sdcard/diag_logs/20200120_175635
01-20 17:56:35.403 19087 19087 E Diag_Lib: diag_mdlog: Unable to create directory, errno: 13 Exiting....
  • OTOH, если приложение не предоставило оба разрешения, то оно отлично работает в следующих журналах:
01-20 17:57:38.258 19364 19364 E Diag_Lib: diag_mdlog: command = o
01-20 17:57:38.258 19364 19364 E Diag_Lib: diag_mdlog: command = f
01-20 17:57:38.258 19364 19364 E Diag_Lib: diag: No Session is active for the given mask
01-20 17:57:38.259 19364 19364 E Diag_Lib: diag_mdlog: Warning output directory already exists: /sdcard/abc
01-20 17:57:38.259 19364 19364 E Diag_Lib: diag_mdlog: Proceeding...
01-20 17:57:38.270 19364 19364 E Diag_Lib:
01-20 17:57:38.270 19364 19364 E Diag_Lib: diag_mdlog: Diag_LSM_Init succeeded.
01-20 17:57:38.270 19364 19364 E Diag_Lib:
01-20 17:57:38.270 19364 19364 E Diag_Lib:  REMOTE PROCESSOR MASK 0
01-20 17:57:38.270 19364 19364 E Diag_Lib: diag:kernel supported: NUM_PERIPHERALS = 6, DIAG_CON_ALL: 127
01-20 17:57:38.271 19364 19364 E Diag_Lib:  logging switched
01-20 17:57:38.271 19364 19364 E Diag_Lib: Output dirs /sdcard/abc --- /sdcard/abc
01-20 17:57:38.271 19364 19364 E Diag_Lib:
01-20 17:57:38.271 19364 19364 E Diag_Lib: diag_mdlog: Reading mask for MSM, proc_type: 0
01-20 17:57:38.271 19364 19364 E Diag_Lib: Reading the mask file: /sdcard/Test.cfg
01-20 17:57:38.271 19364 19364 E Diag_Lib: diag: Determining contents of directory /sdcard/abc for circular logging ...
01-20 17:57:42.446 19364 19368 E Diag_Lib:  creating new file /sdcard/abc/diag_log_20200120_1757421579523262440.qmdl

Теперь, если я откажу разрешения на запись из настроек Android, затем я получу следующие журналы ошибок:

01-20 18:00:18.799 19364 19368 E Diag_Lib: diag: In log_to_device, error writing to sd card, Permission denied, errno: 13
01-20 18:00:18.799 19364 19368 E Diag_Lib:  failed to write to file, device may be absent, errno: 13
01-20 18:00:18.799 19364 19368 E Diag_Lib:  File open error, please check
01-20 18:00:18.799 19364 19368 E Diag_Lib:  memory device -1, errno: 13
01-20 18:00:18.800 19364 19368 E Diag_Lib:  File open error, please check
01-20 18:00:18.800 19364 19368 E Diag_Lib:  memory device -1, errno: 13

Какое-нибудь решение этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...