Я получаю странное поведение с 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
Какое-нибудь решение этой проблемы?