Я разработал приложение с системными разрешениями, которое загружает ZIP-файл из сборки Android 14 R33.
Приложение загружает файл в /data/ota_packages/update.zip.
Затем я выполняю RecoverySystem.VerifyPackage, и метод возвращает правильный результат.
Затем я выполняю RecoverySystem.installpackage и с помощью logcat проверяю, что Android обращается к этому файлу и расшифровывает его с помощью uncrypt.
Проблема возникает при перезагрузке устройства в режиме рекавери и ота не устанавливается так как в рекавери наблюдается следующая ошибка:
libfs_mgr unknow volume for path /cache/recovery/block.map
Помощь!!!
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Привет, Satur9nine. Прочитав документацию, он решил, что режим обновления RecoverySystem все еще используется. Мне неясно, как включить код для использования update_engine в мое приложение. Мое приложение работает с системными разрешениями. Я не могу импортировать класс android.os.UpdateEngine. Спасибо!
Я добавил ответ с предложением изучить образец обновления LineageOS.
LineageOS любезно предоставляет пример приложения, демонстрирующий, как взаимодействовать с AOSP update_engine для установки OTA ОС: https://github.com/LineageOS/android_bootable_recovery/tree/lineage-21.0/updater_sample
Вы можете скопировать исходный код этого приложения в свое дерево AOSP, чтобы изучить его.
Спасибо за помощь. Наконец, я реализовал код update_engine для обновления с помощью ZIP-файла, который я скачал со своего сервера. Все это с помощью приложения с разрешениями платформы. Спасибо.
@Dani Отлично, добро пожаловать! Нажмите галочку, чтобы принять этот ответ, если он вас устраивает.
Использование восстановления для установки обновления ОС Android в наши дни является необычным. С момента запуска новых устройств под управлением Android 8 мы используем разделы A/B и
update_engineдля установки обновлений во время работы системы и без восстановления. Вы не используете разделы A/B? См. source.android.com/docs/core/ota/ab