Add possibility to update Replicant from within Replicant / OTA / Over The Air
- 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.
Updated by Kurtis Hanna about 3 years ago
android_packages_apps_CMUpdater uses a the GNU General Public License v2.0
It doesn't look like we have this package hosted on our LineageOS mirror: https://git.replicant.us/LineageOS-mirror/?ofs=150
Should we grab it next time we update the mirror so we can maybe dink around with it to see if we can get it to work with Replicant?