2018-03-29 10:28:23 -07:00
|
|
|
Updater
|
|
|
|
=======
|
|
|
|
Simple application to download and apply OTA packages.
|
|
|
|
|
|
|
|
|
|
|
|
Server requirements
|
|
|
|
-------------------
|
|
|
|
The app sends `GET` requests to the URL defined by the `updater_server_url`
|
|
|
|
resource (or the `lineage.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": "nightly",
|
2018-04-06 12:39:53 -07:00
|
|
|
"size": 314572800,
|
2018-03-29 10:28:23 -07:00
|
|
|
"url": "https://example.com/ota-package.zip",
|
|
|
|
"version": "15.1"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
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.lineage.releasetype` property.
|
2018-04-06 12:39:53 -07:00
|
|
|
The `size` attribute is the size of the update expressed in bytes.
|
2018-03-29 10:28:23 -07:00
|
|
|
The `url` attribute is the URL of the file to be downloaded.
|
|
|
|
The `version` attribute is the string to be compared with the `ro.lineage.build.version` property.
|
|
|
|
|
|
|
|
Additional attributes are ignored.
|
|
|
|
|
|
|
|
|
|
|
|
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`
|
2022-05-10 22:20:58 -07:00
|
|
|
- Build the dependencies by running `m framework` from the root of the
|
|
|
|
Android source tree.
|
|
|
|
- Create `system_libs/` directory in Updater repo and copy `classes.jar` file
|
|
|
|
from `out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/` into it.
|
2018-03-29 10:28:23 -07:00
|
|
|
|
|
|
|
You need to do the above once, unless Android Studio can't find some symbol.
|
2022-05-10 22:20:58 -07:00
|
|
|
In this case, rebuild the system libraries with `m framework`.
|