#25 Падения без сохранений

Geschlossen
vor 3 Jahren geöffnet von toby3d · 16 Kommentare

Автосохранение в заранее заданные папки не работает. Первая попытка приводит к повторному запросу выбора директории, а следующая - к тихому падению приложения или падению с попапом (см. скриншот). В конечном итоге ничего не сохраняется ни в каком виде.

Устройство Xiaomi Mi 5s Plus с MicroG для LineageOS 17.1 (Android 10). Сохранялка и Качалка установлены через F-Droid.

Автосохранение в заранее заданные папки не работает. Первая попытка [приводит к повторному запросу выбора директории](https://www.youtube.com/watch?v=kdiqh0fcyRI), а следующая - к тихому падению приложения или падению с попапом (см. скриншот). В конечном итоге ничего не сохраняется ни в каком виде. Устройство Xiaomi Mi 5s Plus с MicroG для LineageOS 17.1 (Android 10). Сохранялка и Качалка установлены через F-Droid.
Umnik kommentierte vor 3 Jahren
Besitzer

А это на любом файле или для конкретных примеров?

А это на любом файле или для конкретных примеров?
Maxim Lebedev kommentierte vor 3 Jahren
Ersteller

Любые файлы. Что с картинками, что с архивами или документами.

Больше напрягает то, что я заранее выдав права на директорию обязан заново их предоставлять в момент сохранения. Скорее всего права "доступа к хранилищу" всё равно потребуются. Но это не точно, я в мобильной разработке не силён.

Я готов поковырять ночные и тестовые сборки на себе, если необходимо.

Любые файлы. Что с картинками, что с архивами или документами. Больше напрягает то, что я заранее выдав права на директорию обязан заново их предоставлять в момент сохранения. Скорее всего права "доступа к хранилищу" всё равно потребуются. Но это не точно, я в мобильной разработке не силён. Я готов поковырять ночные и тестовые сборки на себе, если необходимо.
Umnik kommentierte vor 3 Jahren
Besitzer

А можешь логкат собрать? У меня нет никакой системы логгирования в приложении, чтобы исключить случайные утечки, так что мне хотябы сам стек трейс от Андроида увидеть.

adb logcat -c
adb logcat -v threadtime > file.txt
*воспроизвести падение*
Ctrl+C

И пришли файл. Если необходимо исключить из лога потенциально приватные данные, то скопируй мне только конец, где будет написано FATAL что-нибудь. Ну там будет очевидно, где начинается и заканчивается стектрейс.

Более подробно расписать, как логкат снимать? Хотя у тебя Линейдж, так что ты знаешь, я думаю.

А можешь логкат собрать? У меня нет никакой системы логгирования в приложении, чтобы исключить случайные утечки, так что мне хотябы сам стек трейс от Андроида увидеть. ``` adb logcat -c adb logcat -v threadtime > file.txt *воспроизвести падение* Ctrl+C ``` И пришли файл. Если необходимо исключить из лога потенциально приватные данные, то скопируй мне только конец, где будет написано FATAL что-нибудь. Ну там будет очевидно, где начинается и заканчивается стектрейс. Более подробно расписать, как логкат снимать? Хотя у тебя Линейдж, так что ты знаешь, я думаю.
Umnik kommentierte vor 3 Jahren
Besitzer

В целом, второй раз он у тебя спрашивает разрешения не на картинку, а на документы, на самом деле, потому что шарится не картинка, а текст. Так что второй раз можно указать папку для документов. Но это ответ на то, почему 2 раза спрашивает, а не на то, почему падает.

В целом, второй раз он у тебя спрашивает разрешения не на картинку, а на документы, на самом деле, потому что шарится не картинка, а текст. Так что второй раз можно указать папку для документов. Но это ответ на то, почему 2 раза спрашивает, а не на то, почему падает.
Maxim Lebedev kommentierte vor 3 Jahren
Ersteller

logcat с процессом выбора автосохранения дважды: первая попытка ничем не отзывается, а на второй - уже сообщение о падении, на которой я остановил запись.

[logcat с процессом](https://gist.github.com/toby3d/458ec3fadeb17f494e54c5478467aa92) выбора автосохранения дважды: первая попытка ничем не отзывается, а на второй - уже сообщение о падении, на которой я остановил запись.
Umnik kommentierte vor 3 Jahren
Besitzer

Ага, спасибо, изучу.

Ага, спасибо, изучу.
Umnik kommentierte vor 3 Jahren
Besitzer

Очень странное падение. Якобы нет файла, но я не использую доступ к файлам в приципе. Точно сказать сходу не могу, что не так, потому что релизные сборки обфусцируются частично и там имена методов и строки поехали.

Вот сборка без обфускации. Логов в ней тоже пока нет. Дай стектрейс с ней, я хоть гляну, куда логи добавить, чтобы понять, что происходит.

Очень странное падение. Якобы нет файла, но я не использую доступ к файлам в приципе. Точно сказать сходу не могу, что не так, потому что релизные сборки обфусцируются частично и там имена методов и строки поехали. Вот сборка без обфускации. Логов в ней тоже пока нет. Дай стектрейс с ней, я хоть гляну, куда логи добавить, чтобы понять, что происходит.
Umnik hat vor 3 Jahren geschlossen
Umnik hat vor 3 Jahren wieder geöffnet
Umnik kommentierte vor 3 Jahren
Besitzer

https://cloud.myachin.xyz/index.php/s/YssaqwyHHrMnoD6

Не туда нажал и закрыл, вместо ссылки.

В общем, дай лог с падением на этой сборке.

А что касается 2х запросов — это не баг, но это я выше описал. Для документов отдельно тоже разреши папку.

https://cloud.myachin.xyz/index.php/s/YssaqwyHHrMnoD6 Не туда нажал и закрыл, вместо ссылки. В общем, дай лог с падением на этой сборке. А что касается 2х запросов — это не баг, но это я выше описал. Для документов отдельно тоже разреши папку.
Maxim Lebedev kommentierte vor 3 Jahren
Ersteller

logcat c дебажной сборкой. В районе 14-й секунды была первая попытка сохранить файл, а секунд через 10 - вторая, приводящая к падению.

Причём с этой сборкой в настройках предварительно указана директория только для изображений (как и раньше), но больше нет запроса директории для сохранения документов после первой попытки.

[logcat](https://gist.github.com/toby3d/f80c1ccbf6f2c512bf55b0c40a5cbc68) c дебажной сборкой. В районе 14-й секунды была первая попытка сохранить файл, а секунд через 10 - вторая, приводящая к падению. Причём с этой сборкой в настройках предварительно указана директория только для изображений (как и раньше), но больше нет запроса директории для сохранения документов после первой попытки.
Umnik kommentierte vor 3 Jahren
Besitzer

Если я правильно понимаю, на момент, когда Сохранялка обращается к владельцу файла за данными, владелец эти данные уже убил. Владельцем является Музей 3 приложение в данном случае.

Вопросы:

  1. Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится?
  2. Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет? То есть когда Качалка вытянет картику по ссылке, а затем предоставит доступ Сохранялке
  3. Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные? Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити?

В общем и в целом, как бы то ни было, я могу несколько переделать сохранялку. Чтобы она сразу забирала контент в себя, а только потом задавала вопрос юзеру. Если юзер всё сделает правильно, но сохранит объект. И при любом раскладе удалит объект, если его никто не забрал за Х минут. Так делает Качалка, например. Вот эту логику могу забрать в Сохранялку ещё.

Но до этого хочется понять наверняка, что происходит. А не гадать.

Если я правильно понимаю, на момент, когда Сохранялка обращается к владельцу файла за данными, владелец эти данные уже убил. Владельцем является Музей 3 приложение в данном случае. Вопросы: 1. Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится? 2. Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет? То есть когда Качалка вытянет картику по ссылке, а затем предоставит доступ Сохранялке 3. Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные? Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити? В общем и в целом, как бы то ни было, я могу несколько переделать сохранялку. Чтобы она сразу забирала контент в себя, а только потом задавала вопрос юзеру. Если юзер всё сделает правильно, но сохранит объект. И при любом раскладе удалит объект, если его никто не забрал за Х минут. Так делает Качалка, например. Вот эту логику могу забрать в Сохранялку ещё. Но до этого хочется понять наверняка, что происходит. А не гадать.
Umnik kommentierte vor 3 Jahren
Besitzer

Попробуй на этом приложении: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab

Только проверять нужно:

  1. Только на картинках
  2. Выбирать тот, который помечен как DEBUG. См. скриншот:
Попробуй на этом приложении: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab Только проверять нужно: 1. Только на картинках 2. Выбирать тот, который помечен как DEBUG. См. скриншот:
Umnik kommentierte vor 3 Jahren
Besitzer

Здарова.

Вот ещё обновление: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab

Полностью переписал механизм сохранения данных. Теперь во-первых не будет ложного запроса при шаринге ссылки, во-вторых файл сразу же утягивается в кеш и только потом начинается его обработка. При разрушении активити по любой причине (хоть штаное завершение, хоть падение) кеш очищается.

Можешь посмотреть?

Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение.

Здарова. Вот ещё обновление: https://cloud.myachin.xyz/index.php/s/Ff7bJ6YMwy5WXab Полностью переписал механизм сохранения данных. Теперь во-первых не будет ложного запроса при шаринге ссылки, во-вторых файл сразу же утягивается в кеш и только потом начинается его обработка. При разрушении активити по любой причине (хоть штаное завершение, хоть падение) кеш очищается. Можешь посмотреть? Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение.
Maxim Lebedev kommentierte vor 3 Jahren
Ersteller

Сорян за столько долгое молчание. Я переезжал и было вообще не до компьютерно-телефонных дел.

Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение.

Это проблема, так как кастомные сборки не хотят устанавливаться поверх уже установленного приложения. Приходится сносить оригинал и ставить кастомную с потерей уже настроенных директорий.

Можешь посмотреть?

Накатил, попробовал, на основе ситуации описанной выше, только ручное сохранение и результаты смешанные: то как и раньше падает на второй попытке пошарить файл, то при шаринге картинки предлагает сохранить (внезапно) текст.


Всё это началось и продолжается в пределах приложения живых обоев Muzei. Я пробую сохранять текущие обои встроенного плагина "Painting of the day" и любые текущие обои плагина Pixiv for Muzei. Можешь попробовать накатить эти приложения и воспроизвести проблемы локально. Я подозреваю что дело отнюдь не в ОС или модели устройства, а в механизме шаринга конкретно оттуда.

Отвечая на вопросы ранее с последней предоставленной тобой сборкой:

Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится?

В мобильном огнелисе шеринг пикч в сохранялку работает корректно.

Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет?

Открытие картинки в огнелисе в новой вкладке и последующий шаринг вкладки в сохранялку работает корректно.

Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные?

Не пользуюсь сторонними или встроенными оптимизаторами.

Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити?

Настройка "Лимит фоновых процессов" установлена в "Стандартное значение", опция "Вытеснение фоновых Activity" отключена.

Сорян за столько долгое молчание. Я переезжал и было вообще не до компьютерно-телефонных дел. > Тут сломаны нафиг настройки, туда лучше не лезть. Они сломаны из-за как раз изменений и пока их не подтянул под новое поведение. Это проблема, так как кастомные сборки не хотят устанавливаться поверх уже установленного приложения. Приходится сносить оригинал и ставить кастомную с потерей уже настроенных директорий. > Можешь посмотреть? Накатил, попробовал, на основе ситуации описанной выше, только ручное сохранение и результаты смешанные: то как и раньше падает на второй попытке пошарить файл, то при шаринге картинки предлагает сохранить (внезапно) текст. --- Всё это началось и продолжается в пределах приложения живых обоев [Muzei](https://f-droid.org/en/packages/net.nurik.roman.muzei/). Я пробую сохранять текущие обои встроенного плагина "Painting of the day" и любые текущие обои плагина [Pixiv for Muzei](https://f-droid.org/en/packages/com.antony.muzei.pixiv/). Можешь попробовать накатить эти приложения и воспроизвести проблемы локально. Я подозреваю что дело отнюдь не в ОС или модели устройства, а в механизме шаринга конкретно оттуда. Отвечая на вопросы ранее с последней предоставленной тобой сборкой: > Если ты пошаришь картинку из Хрома (не ссылку, т.к. там владельцем будет Качалка), проблема сохранится? В мобильном огнелисе шеринг пикч в сохранялку работает корректно. > Если ты пошаришь ссылку из любого браузера (или "картинку" из Фаерфокса, который на самом деле пошарит ссылку) и Качалка стригеррится, падение будет? Открытие картинки в огнелисе в новой вкладке и последующий шаринг вкладки в сохранялку работает корректно. > Нет ли у тебя в системе агрессивных киллеров, которые могут слишком рьяно чистить ОЗУ и убивать владельцев до того, как они передадут мне данные? Не пользуюсь сторонними или встроенными оптимизаторами. > Не включено ли в Девелопер Опшенс сохранение только, скажем, одного последнего активити? Настройка "Лимит фоновых процессов" установлена в "Стандартное значение", опция "Вытеснение фоновых Activity" отключена.
Umnik kommentierte vor 3 Jahren
Besitzer

Спасибо. Ещё поисследую позже. Надо пока текущую сборку стабилизировать, т.к. в ней уже есть ради чего релиз делать.

Спасибо. Ещё поисследую позже. Надо пока текущую сборку стабилизировать, т.к. в ней уже есть ради чего релиз делать.
Umnik kommentierte vor 3 Jahren
Besitzer

Частично исправлено в версии 1.12

Приложение посылает не совсем корректный интент. А точнее — сообщает, что файла mimeType image/*. Приложение же пытается сохранять объекты исходя из конкретного типа. Т.к. там просто звёздочка, была проблема. Это и исправено в 1.12 частично. Частично, потому что:

  1. Определяется такой маймТайп и файл пытаюсь распознать по заголовку. Сейчас есть распознавание только для pdf и jpeg. Если картинки в жпеге, то проблемы не будет. Если картинки есть в других форматах, то сообщи, пожалуйста, в каких именно. Добавлю и их распознование
  2. Музей без плагина шарит реально текст, а не картинку. Так что приложение честно просит сохранять текст. А ещё оно иногда, в первый раз, вообще может ничего не прислать. Не понятно почему, возможно оно из сети подгружает данные и не успевает их вытянуть. С плагином пока такого не случалось — сразу картинки шлёт

В общем, можешь посмотреть сборку 1.12, которая вот тут прицеплена: https://notabug.org/Umnik/SaveTo/releases Эта версия и будет собрана F-Droid'ом на следующей неделе. Ну, только с другой подписью, понятное дело.

Частично исправлено в версии 1.12 Приложение посылает не совсем корректный интент. А точнее — сообщает, что файла mimeType `image/*`. Приложение же пытается сохранять объекты исходя из конкретного типа. Т.к. там просто звёздочка, была проблема. Это и исправено в 1.12 частично. Частично, потому что: 1. Определяется такой маймТайп и файл пытаюсь распознать по заголовку. Сейчас есть распознавание только для pdf и jpeg. Если картинки в жпеге, то проблемы не будет. Если картинки есть в других форматах, то сообщи, пожалуйста, в каких именно. Добавлю и их распознование 2. Музей без плагина шарит реально текст, а не картинку. Так что приложение честно просит сохранять текст. А ещё оно иногда, в первый раз, вообще может ничего не прислать. Не понятно почему, возможно оно из сети подгружает данные и не успевает их вытянуть. С плагином пока такого не случалось — сразу картинки шлёт В общем, можешь посмотреть сборку 1.12, которая вот тут прицеплена: https://notabug.org/Umnik/SaveTo/releases Эта версия и будет собрана F-Droid'ом на следующей неделе. Ну, только с другой подписью, понятное дело.
Umnik kommentierte vor 3 Jahren
Besitzer

А, ну и сейчас в принципе не должно падать, т.к. теперь пытаюсь определять не ожидаемые данные и в худшем случае игнорирую их

А, ну и сейчас в принципе не должно падать, т.к. теперь пытаюсь определять не ожидаемые данные и в худшем случае игнорирую их
Umnik hat vor 3 Jahren geschlossen
Anmelden, um an der Diskussion teilzunehmen.
Kein Meilenstein
Niemand zuständig
2 Beteiligte
Laden…
Abbrechen
Speichern
Hier gibt es bis jetzt noch keinen Inhalt.