Я пытаюсь создать систему для выполнения беспроводных обновлений APK и ОС на моих устройствах Android. Мой вопрос касается части фактического выполнения обновления после загрузки пакетов для ОС и APK. Обратите внимание на следующее:
Что касается обновления APK:
На самом деле я попытался и успешно выполнил обновление APK, выполнив команду оболочки pm install -r $PATH_TO_DOWNLOADED_APK
после получения оболочки из Runtime.getRuntime().exec("su")
кода моего приложения.
Мои вопросы:
По поводу обновления ОС:
Я ссылался на следующую ссылку: https://source.android.com/devices/tech/ota/ Однако я не понял ее полностью.
Мои вопросы:
pm install -r $PATH_TO_APK
в случае обновлений ОС?Есть ли конкретная папка, в которой мне нужно хранить загруженный пакет ОС? Если да, то в какой папке? Если нет, то как мне указать путь к нему?
Android хранит загруженный пакет в разделе кеша, поскольку в настоящее время раздел данных предположительно зашифрован, и Android не может смонтировать его в режиме восстановления без предоставления ключа дешифрования, а другого раздела, достаточно большого для хранения файлов большего размера, нет. Используйте root-доступ, чтобы переместить файл в /cache. Возможно, вам также придется установить для него соответствующее разрешение.
Для чего нужна эквивалентная команда
pm install -r $PATH_TO_APK
в случае обновлений ОС?
Обновление ОС происходит в режиме восстановления (основная ОС), и восстановление может иметь возможность автоматического выполнения команд. Стандартное восстановление Android (<3e>) считывает /cache/recovery/command и выполняет их автоматически. Если это TWRP v2.1 или выше, файл /cache/recovery/openrecoveryscript . Проверьте их ссылки, чтобы узнать больше.
Как загрузить устройство в «режиме восстановления», как указано в пункте № 3 по ссылке?
Мой ответ здесь охватывает это.
Где находятся разделы загрузки и восстановления в устройстве? Отличается ли он от устройства к устройству? На одном из устройств, которые у меня есть, я не вижу папки /boot или /recovery? Имеется ли в виду загрузочная папка / (корневая)?
Они различаются от устройства к устройству, но вы можете найти раздел кеша, смонтированный в /cache . Загрузочный раздел не нужно монтировать, так как все его содержимое автоматически загружается в память во время загрузки. Вам придется искать в Интернете, чтобы найти схему разделов для вашего конкретного устройства. Вопросы и ответы Иззи тоже могут помочь.
Нет, загрузка не означает / папку. На самом деле это даже не каталог, а корень самого большого дерева (файловой иерархии), создаваемого и заполняемого при каждой загрузке Android.
В случае сбоя обновления ОС по какой-либо причине (устройство выключается во время обновления, возникла проблема в пакете обновления и т. д.) — обеспечивает ли Android правильный откат, а также то, что устройство находится в согласованном состоянии и никакие данные не потеряны?
Нет, если восстановление начнет модифицировать системный раздел и будет прервано, обратного пути нет. Даже если процесс завершится нормально, в процессе загрузки могут возникнуть проблемы .
Наконец, обновление/апгрейд ОС вообще нельзя назвать тихим, ведь на экране так много всего происходит.
Повелитель огня