Project

General

Profile

Feature #1833

Add possibility to update Replicant from within Replicant

Added by Wolfgang Wiedmeyer 2 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Base applications
Target version:
Start date:
09/10/2017
Due date:
% Done:

0%

Resolution:
Device:

Description

LineageOS has the CMUpdater app that handles updates to newer versions. So far, this app was removed in Replicant and no such functionality is available in Replicant. However, this feature gets regularly requested by Replicant users and there would be some advantages of having this working:
  • Automatic checks and notifications if a new update is available
  • Display of Changelog and optionally additional hints
  • No need to connect the device to a PC for the update
  • Automatic signature check of the downloaded update zip
  • Probably more...

The CMUpdater app could be adapted in a way that it works together with a webroot and the release scripts. Replicant doesn't have several release channels and dozens of supported devices, so a lot can be simplified and it would be good if nothing more than a bunch of files on the server side would be necessary (no support for POST requests required).

I could image that this can be implemented by adding a new script to the release scripts that generates a folder with a json file for each device and in the json file are at least entries for the latest release, the Changelog and the release date. The app on the device downloads the json file that belongs to the device it is running on. And the app itself generates the download URL of the update zip from the standard paths that are used for the release images webroot. Maybe the Changelog can also be put in such a standard path (RELEASE_NUMBER/DEVICE_NAME/changelog), so that a Changelog entry in the json wouldn't be nessary.

When testing the app, it is important to check that the signature verification works and the installation with the Replicant recovery is reliable. The app should refuse to install the update if it's not for a new minor release (e.g. 0002 to 0003), but for a major release (e.g. Replicant 6.0 to Replicant 7.1), because these should still be done with a factory reset. It's possible that the CMUpdater app already handles all of this well and only minor adaptations for Replicant are needed.

Also available in: Atom PDF