Почему данные одного и того же приложения хранятся в разных местах?

Я установил такое же приложение на

  • устройство под управлением Android 7.0 ( без рута ) и

  • на планшете под управлением Android 4.4 ( root ),

но, тем не менее, я заметил, что данные приложения (базы данных/файлы и т. д.) хранятся в разных местах на каждом устройстве:

На планшетном устройстве файлы расположены по адресу: /storage/sdcard0/Android/data/com.packagenameи с ними можно легко манипулировать (например, копировать, создавать резервные копии и т. д.), но не на смартфоне, который, вероятно, оставляет место хранения: /data/data/com.packagenameк которому у меня нет доступа.


Я понимаю, что обычно он хранится в /data/data( защищенном внутреннем хранилище приложения ) или /storage/sdcard0/Android/data( хранилище в разделе внутренней памяти пользователя ), иначе на SD-карте, если она есть. Кроме того, здесь был задан связанный с этим вопрос: где приложения Android хранят данные?

Больше всего меня удивляет, почему это происходит в одном и том же приложении (одна и та же версия — загруженная неопубликованная версия)?

На этой справочной странице также объясняется, как разработчик может настроить расположение данных приложения по умолчанию. Было бы понятно, если бы были разные версии приложения, но здесь я имею дело только с одним и тем же приложением (т.е. .apkфайлом). Есть ли что-то, что мне не хватает, или что-то изменилось в последних версиях Android?

Меня беспокоит то, что я не могу получить доступ к этим файлам /data/dataбез рута, и поскольку это большие файлы, и мне нужно сделать их резервную копию на случай, если данные приложения будут случайно очищены (и я уже сделал это по ошибке :(.

Самое главное, я не хочу постоянно загружать их снова.

Примечание. К обоим устройствам не подключено внешнее хранилище.

Судя по всему, самым большим препятствием является невозможность доступа к файлам на /data/data(устройство 1), следовательно, невозможно резервное копирование... (Я был бы признателен, если бы для этого был найден другой надежный обходной путь )

Разве так не было всегда /data/data? Можете ли вы сказать, в каком месте хранятся данные приложения? Вы знаете, являются ли файлы файлами данных? Кроме того, как вы действительно знаете, без рута?
Я уверен, что четкие данные также стирают данные в /sdcard/Android/data, на самом деле я только что попробовал это в определенном приложении, и это произошло. Кроме того, я думаю /Android/data, и /data/dataу меня разные цели. Я обнаружил, что /Android/dataэто больше используется для кешей/файлов, связанных с рекламой, тогда как /data/dataбольше для личных вещей (например, для хранения информации для входа).
@SSS Я понимаю вашу точку зрения, но, по крайней мере, на планшете я могу легко сделать резервную копию его данных, даже если я удалю их по ошибке, это не причинит особого вреда :)

Ответы (2)

Все приложения имеют приватное хранилище в затянувшейся папке /data. Некоторые приложения предпочитают временно хранить данные в общедоступных местах. К сожалению, я не могу точно сказать, каковы были точные результаты этого, но я знаю, что способ обработки общих данных изменился в Android 7 по соображениям безопасности.

поэтому могу ли я сделать резервную копию данных приложения, хранящихся в /dataпапке на этом некорневом устройстве

Как бы странно это ни звучало, у меня был успешный обход этой проблемы:

  • Мне пришлось вручную переместить необходимые данные приложения (файлы) из /data/dataв /Android/data(за исключением shared_preferencesпапки и папки базы данных, т.е. обычной конфигурации).

  • Во-вторых, мне пришлось настроить приложение для использования частного каталога, изменив файл userDefault.xml(возможно, другой в зависимости от рассматриваемого приложения) и добавив эту необходимую строку кода:

    <int name="app_private_dir"value_"1"/>

Я временно magisk'd, чтобы полностью достичь этого :)