Install and Configure Update Factory Client packages for Embedded Android¶
Update Factory Android Client is an open-source project by Kynetics. It contains the UF Client Service that, once installed on an embedded Android device, handles all communication to and from the Update Factory platform.
The project contains also an example UF UI App which can be installed on your embedded Android device to manage the Update Factory client's settings.
The UF UI App can be used to configure Update Factory as an app using the native Android keyboard. If you have the ufConf.conf file defined, the UF UI App will read that configuration file first and not require user input for configuration in the app. Additionally, the UF UI App can also be used to monitor update statuses between the device and Update Factory. It can be useful for debugging purposes.
In addition, Kynetics provides these clients as Android Package (APK) files for side-load installation. The UF Client Service must be installed as a SYSTEM application to work correctly. To be a system app, it is necessary to sign the application with the platform key. This can be the test version of the platform key provided by the Android build system or a custom one created for production purposes. Please refer to this technical note for more information regarding how to sign system applications. Also, a signing example is provided in section Signing the UF client service APK.
Note: For a successful installation, this guide assumes that you've powered on your equipment, have debug/developer mode enabled in Android, and have connected your device to your computer so that the adb utility can be used to side-load (install) APKs and copy the ufConf.conf file to your device.
Download the APKs¶
The last version of the client applications are available on the Github releases page
We've pre-signed the the uf client service APK with the:
- NXP platform keys: use this for development Android OS builds based on NXP BSP
- AOSP platform keys: use this for development Android OS builds based on AOSP
Signing the UF client service APK¶
In the case that you need to sign the uf client service APK with different platform keys, you will need the following standard keys that were also used to sign your OS image:
You also will need the signapk.jar utility, which you can find under the Android OS buildsystem folder:
Once you have all of your files in order, you can run the following command to sign the uf client service (of course fix the paths/file names as needed for your case):
java -jar signapk.jar platform.x509.pem platform.pk8 uf-client-service-v1.0.0.apk uf-client-service-signed-v1.0.0.apk
Preparing the ufConf.conf configuration files¶
Learn more about the parameters in the ufConf.conf configuration file and also where to copy it onto your device, here.
Proceed to side-load the signed UF Client Service APK. In this example, it is called: uf-client-service-signed-v1.0.0.apk.
adb install uf-client-service-signed-v1.0.0.apk
After installation of the UF Client Service, you will need to run the following, once:
adb shell am startservice -a com.kynetics.action.BIND_UF_SERVICE
Optionally, you can also install the UF UI App:
adb install uf-client-ui-v1.0.0.apk
Once installed successfully, you can find the UF UI App in the Android launcher.
Supported update types¶
The android client is able to apply two kinds of updates:
Application: the client installs (or updates) applications; all files contained in the Distribution must be Android applications (.apk). An application update will fail under the following conditions:
- the installation of one or more applications has failed;
- some files in the update are not apk files.
The update is performed without a system reboot
System: an update of the OS. The Software module must contain a
single OTAfile. The update requires a system reboot
Application and System aren't related to Software module type of Update Factory server.