- Rebrand to me.pawlet.updater package - Replace ro.lineage.* props with ro.pawlet.* equivalents - Use ro.product.device for device name lookup - Set server URL to https://updates.pawlet.me/api/v1/{device}/ - Bump compileSdk/targetSdk to 36 (Android 16) - Drop all locale translations (English-only for now) - Add NOTICE.txt crediting upstream LineageOS team - Remove old org.lineageos.updater.xml privapp files - UpdaterReceiver: add missing Utils import - Remove setPerformanceMode chain (UpdateEngine API removed in Android 16)
62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
<!--
|
|
SPDX-FileCopyrightText: oxmc / PawletOS
|
|
SPDX-License-Identifier: Apache-2.0
|
|
-->
|
|
|
|
PawletOS Updater
|
|
================
|
|
OTA update app for PawletOS. Forked from the LineageOS Updater.
|
|
Downloads and applies A/B (seamless) OTA packages via `update_engine`.
|
|
|
|
|
|
Server requirements
|
|
-------------------
|
|
The app sends `GET` requests to the URL defined by the `updater_server_url`
|
|
resource (or the `pawlet.updater.uri` system property) and expects as response
|
|
a JSON with the following structure:
|
|
```json
|
|
{
|
|
"response": [
|
|
{
|
|
"datetime": 1230764400,
|
|
"filename": "ota-package.zip",
|
|
"id": "5eb63bbbe01eeed093cb22bb8f5acdc3",
|
|
"romtype": "release",
|
|
"size": 314572800,
|
|
"url": "https://updates.pawlet.me/builds/rpi4/ota-package.zip",
|
|
"version": "1.0"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
The `datetime` attribute is the build date expressed as UNIX timestamp.
|
|
The `filename` attribute is the name of the file to be downloaded.
|
|
The `id` attribute is a string that uniquely identifies the update.
|
|
The `romtype` attribute is the string to be compared with the `ro.pawlet.releasetype` property.
|
|
The `size` attribute is the size of the update expressed in bytes.
|
|
The `url` attribute is the URL of the file to be downloaded.
|
|
The `version` attribute is the string to be compared with the `ro.pawlet.build.version` property.
|
|
|
|
Additional attributes are ignored.
|
|
|
|
The default server URL template is `https://updates.pawlet.me/api/v1/{device}/`
|
|
where `{device}` is replaced at runtime with `ro.product.device`.
|
|
|
|
|
|
Build with Android Studio
|
|
-------------------------
|
|
Updater needs access to the system API, therefore it can't be built only using
|
|
the public SDK. You first need to generate the libraries with all the needed
|
|
classes. The application also needs elevated privileges, so you need to sign
|
|
it with the right key to update the one in the system partition. To do this:
|
|
|
|
- Place this directory anywhere in the Android source tree
|
|
- Generate a keystore and keystore.properties using `gen-keystore.sh`
|
|
- Build the dependencies running `make UpdaterStudio` from the root of the
|
|
Android source tree. This command will add the needed libraries in
|
|
`system_libraries/`.
|
|
|
|
You need to do the above once, unless Android Studio can't find some symbol.
|
|
In this case, rebuild the system libraries with `make UpdaterStudio`.
|