Платформа подписала приложение OTA Updater для Android - PullRequest
1 голос
/ 23 октября 2019

Попытка собрать приложение для обновления ОС Android, созданное из исходного кода. Даже после подписания приложения с помощью ключа платформы метод RecoverySystem.installPackage(context,file) при применении к файлу обновления, помещенному в «/ data / cache», выдает ошибку, что запись в / cache для приложения не разрешена. Кроме того, выдается ошибка SElinux при попытке доступа к разделу / кэш-памяти.

Приложение имеет необходимые разрешения android.permission.RECOVERY, android.permission.REBOOT и android.permission.ACCESS_CACHE_FILESYSTEM

Проходя по исходному коду,строки

...
FileWriter uncryptFile = new FileWriter(UNCRYPT_PACKAGE_FILE);
try {
    uncryptFile.write(filename + "\n");
} finally {
    uncryptFile.close();
}
...

в RecoverySystem.installPackage () вызывают ошибку. (http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/android/os/RecoverySystem.java#562)

Даже при отображении ошибки устройство все равно перезагружается для применения обновления, но при восстановлении отображается экран «нет команд», скорее всего, поскольку команды не записываются в / cache / recovery

сборка ОС является сборкой пользователя и, следовательно, не рутирована.

я что-то упустил? есть ли другой способ для приложения, подписанного платформой, установить обновления прошивки для сборки пользователя?

Похожие: Разработка Android RecoverySystem.installPackage () не может выполнить запись в / cache / recovery /, команда отклонена

...