У меня есть резервные копии Android с моего старого (теперь мертвого) телефона kitkat. Пытаясь восстановить данные двух разных приложений из резервной копии, я не могу запустить приложение со старой базой данных. Я копирую файлы в /data/data/TLD.SOMETHING.APPDIRECORY, но когда я открываю приложение, оно сразу вылетает.
По крайней мере, одно из приложений имеет ту же версию, что и раньше, поскольку оно не обновлялось годами. Права доступа к файлам правильные (пользователь и группа и -rw-------). Если я сгенерирую данные приложения на андроиде 6, переименовав старые данные и запустив приложение, приложение не вылетит, а вновь созданные файлы будут иметь те же права доступа, что и те, которые я восстановил.
Поэтому единственная причина, о которой я могу думать, - это формат базы данных. Я думаю, что, скорее всего, формат БД изменился между Android 4 и 6, и приложения используют только интерфейс к ОС, который обрабатывает фактический доступ к БД для приложения. «ОС» может быть поставщиком SQLite для пакетов ОС или чем-то еще. Верно ли мое предположение? В чем разница и как конвертировать?
Спасибо!
GiantTree заработало. С его комментарием я нашел https://forum.xda-developers.com/showpost.php?s=08f8d78aabe88fb570ec1e59a37e71a8&p=67319237&postcount=3
Что делает трюк. Поэтому вам нужно исправить пользователя, группу, права Unix и контекст безопасности SELinux. Спасибо за этот быстрый ответ!
ГигантДерево