From ff5023a36c46c428fa9a5644f82b572362af7743 Mon Sep 17 00:00:00 2001 From: Bronson Mock <57153834+bronson-mock@users.noreply.github.com> Date: Tue, 18 Feb 2020 11:59:05 -0800 Subject: [PATCH] Update README.md --- README.md | 246 +----------------------------------------------------- 1 file changed, 1 insertion(+), 245 deletions(-) diff --git a/README.md b/README.md index fbdfc4d..42ac5b0 100644 --- a/README.md +++ b/README.md @@ -1,245 +1 @@ -# Scan2Deploy Android - -![Screenshot](media/screenshot1.png) - -`Scan2Deploy` is an application devoted to the initial staging of Android devices by reading a barcode sequence. Depending on the content of the staging barcodes `Scan2Deploy` will, in this order: - -* configure the device Wi-Fi network, -* control some device inner system settings (e.g. the lock-screen enabled state), -* download a data archive from a HTTP/HTTPS server and unpack it to the device, -* install/update applications and the system image, and -* run a customary script (to perform any additional setup). - -It's worth noticing that the application is *not* a resident service. The above-mentioned actions are performed as long as `Scan2Deploy` is active and in use. - -## Enable Scan2Deploy - -Scan2Deploy acts as an Android Enterprise [Device Policy Cotroller (DPC)](https://developer.android.com/work/dpc/build-dpc), running in [device owner mode](https://developers.google.com/android/work/play/emm-api/prov-devices#modes_of_operation). This allows Scan2Deploy to configure many protected device settings that would otherwise not be possible. Any DPC app that acts as a device owner must be configured to do so during device setup. By scanning a QR code at the first page of the Android Setup Wizard ("Hi There! page) on a new or factory-reset device, Scan2Deploy is configured as device owner. There are 2 types of QR codes that are supported: - -* [Android Enterprise provisiong QR code](#Android-Enterprise-provisioning-QR-code) -* [Scan2Deploy QR Code](#creating-scan2deploy-files) - -### Android Enterprise provisioning QR code - -Scan the following QR code at the `Hi There!` page to enroll `Scan2Deploy` as device owner: - -![Latest Version](media/scan2deploy-default.gif) - -**Note:** When [generating Scan2Deploy QR codes](#barcode-generation), add `"enroll": true` in your `"layout"` section to cause this same QR code to be displayed in the upper right-hand corner of the page created. - -```json - "layout": { - "enroll": true - }, - -``` - -#### Install a new version of Scan2Deploy - -Scan2Deploy is pre-installed on Datalogic Android devices, however, if you want to use an updated version instead, you can create a custom Android Enterprise enrollment barcode that pulls a new version from Github (or another location of your choosing). The list of valid fields you can choose from are [documented here](https://developers.google.com/android/work/play/emm-api/prov-devices#create_a_qr_code). A sample configuration and pre-generated barcode are provided below. - -There are several tools you can use to encode your JSON data into a QR code. A few options are provided below. - -* [qrencode](https://fukuchi.org/works/qrencode/index.html.en) - Linux command line utility. Example usage: `qrencode -o s2dupdate.png < s2dupdate.json` -* [QR Code Generator](https://kazuhikoarase.github.io/qrcode-generator/js/demo/) - online tool suitable for copy-paste of JSON data. - -##### Version 1.11 - -The JSON and associated barcode for version `1.11` are provided below: - -```json -{ - "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.datalogic.scan2deploy/com.datalogic.scan2deploy.DeviceOwnerReceiver", - "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED": true, - "android.app.extra.PROVISIONING_SKIP_ENCRYPTION": true, - "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "6CG8ls-pzlKcJNeoZtAC-neobD_ypZCI853n_TBGEHI=", -"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://github.com/datalogic/scan2deploy-android/releases/download/v1.11/Scan2Deploy.apk" -} -``` - -![Scan2Deploy v1.11](media/scan2deploy1-11.png) - -## Creating Scan2Deploy files - -You will need to create your Scan2Deploy JSON files using a text editor. A JSON schemas is available to help ensure valid file content. There are several advantages to using an editor that supports this schema: - -* Provides help text for each field -* Provides real-time compiler-like messages letting you know when you have made a mistake -* Allows you to write files faster and with fewer mistakes - -### $schema - -A [JSON schema](https://json-schema.org/) file is used to define the structure and features available in Scan2Deploy. The `$schema` tag is used to indicate which version of the schema you are using. You can versions of schema along with complete field documentation at the [Scan2Deploy Android schema](https://github.com/datalogic/scan2deploy-android-schema) repo. - -
- -🔗 [schema reference](https://github.com/datalogic/scan2deploy-android-schema) - -
- -The latest schema can be referenced like this: - -```json -{ - "$schema": "https://raw.githubusercontent.com/datalogic/scan2deploy-android-schema/master/schema.json" -} -``` - -You can also point to a specific version of the schema by pointing to the desired tag. For example: - -```json -{ - "$schema": "https://raw.githubusercontent.com/datalogic/scan2deploy-android-schema/v1-1-0/schema.json" -} -``` - -### Choosing an editor - -There are several good JSON editors available. We reccommend [Visual Studio Code](https://code.visualstudio.com/). It is free and has [many features designed to make writing JSON files easier](https://code.visualstudio.com/docs/languages/json), including utilizing JSON schemas. - -By including the aforementioned `$schema` tag in you JSON file, Visual Studio Code will provide automatic tool tips and error underlining: - -Some other editors know to use the schema files on schemastore.org when a given file uses a specific file extension that is registered on schemastore.org: `file-name.dla.json` - -### Barcode Generation - -Scan2Deploy barcodes are generated with the `Scan2Deploy` UI inside DXU Desktop. From the main *Device Configuration Utility* page, click the *Scan2Deploy (Beta)* button: - -![Scan2Deploy button](./media/image81.png) - -Once you are at the Scan2Deploy UI page, you can browse to the JSON file you have created and then click `Generate PDF`. - -![Scan2Deploy button](./media/image82.png) - -A PDF page will open up in your default PDF viewer, ready for you to print, save, or scan. - -![Scan2Deploy button](./media/image83.png) - -## Third-party Integration - -The application can be either controller by the user, or programmatically controlled in un-manned manner. This can be achieved by calling the launch intent for the `com.datalogic.android.scan2deploy` package and passing the encoded data representing the configuration to be applied. - -```java -Context context = ...; // Android context to be used (e.g. the current activity one) -String data = ...; // Encoded Scan2Deploy configuration -PackageManager packageManager = context.getPackageManager(); -Intent launchIntent = packageManager.getLaunchIntentForPackage("com.datalogic.android.scan2deploy"); -launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); -launchIntent.putExtra("data", data); -context.startActivity(launchIntent); -``` - -To obtain the encoded configuration data, the `dl_config.exe` program need to be called with the `--encodeonly=true` flag. In this case, obviously, the output filename is not required. An example output in this case is the following: - -```console -> dl_config.exe lock-test.json --encodeonly=true -Datalogic Staging Configurator (ver 1.6.0) -Copyright (c) 2016-2018 by Datalogic MCSA S.r.l. -====================================================================== -Loading file 'lock-test.json' -Processing data ------BEGIN ENCODED DATA----- -Bm9uiYeZ/NWOnA0ZtIrgLMe1iTFLmjusB6P7S4z/lVZ7LFk1d++YM73GqVnqsT9dmxEEuWfR9My93fUA2tUcEv+jxlGNjljHQpXt96BvbVR8bokir3SsXTnFU3qTDeZznLs3PFh+O3n59luLWVNR3c2mFJF5vaGmLue6xHi3bwJgrZOKzs3/bpibCqeNBLcHa/zQRCPQw4= ------END ENCODED DATA----- -``` - -The data string to be passed is the ASCII armored sequence (header and trailer included). - -As a sidenote, when launched from intent it could be beneficial to specify the global action for the application in order to (for example) automatically close it when the settings have been applied. - -## Examples - -### Detailed - -```json -{ - "$schema": "http://json.schemastore.org/datalogic-scan2deploy-android", - "layout": { - "description": "This is for our Android devices", - "enroll": true - }, - "padlock": { - "valid-until": "20991231235959", - "key": "ihavenomouthandimustscream", - "state": "locked", - "hide-from-launcher": false - }, - "global": { - "target-path": "/mnt/sdcard/airwatch", - "install-path": "/mnt/sdcard/airwatch", - "update-path": "/mnt/sdcard/airwatch", - "purge-target-path": true, - "auto-scan": true, - "script": "setup.s", - "action": "close", - "backup-to-enterprise": true, - "script": [ - "[Post-Install]", - "DISABLE_APP com.android.chrome" - ] - }, - "settings": { - "date-time": "Thu, 19 Apr 2018 07:51:37 GMT", - "auto-time": false, - "auto-time-zone": false, - "auto-time-server": "pool.ntp.org", - "debug-bridge": false, - "lock-screen": false, - "status-bar": false, - "navigation-bar": true, - "charge-threshold": 0, - "usb-profile": "NONE", - "usb-function": "CHARGING" - }, - "network": { - "essid": "TESTTKIP", - "hidden": false, - "mode": "wpa-psk", - "mode-key": "datalogic", - "mode-key-encrypted": false, - "ephemeral": false, - "wait-for-connection": true - }, - "deployment": { - "scheme": "http", - "host": "172.19.0.77", - "port": 8080, - "path": "/airwatch.zip", - "ping-timeout": 1000, - "fetch-timeout": 60000, - "working-archive": "/mnt/sdcard/target.zip", - "skip-inflation": true - }, - "blobs": [ - { - "file": "/mnt/sdcard/airwatch/credentials.bin", - "content": "fd09B1iL/k4jRWrjrP0/sO44teY +B3UafBLsMsCEqd1KOv6b6JYBXLVv70FmHdZhIVoEOQvHu7O4PUJStpZQ+4PYjPqCO+NQr81M7GOF421Ke8L2u4EYyqDE5qXfLy2shEgaRwRpr2f35/38WZkh6edyiWZQJjyLeZcuI7WiaJPpw7Jcw7ye7mb7Rl+ePNFmfvUrpeRFtN+5kUsx/SbB1v0gDyOOuoep" - } - ] -} -``` - -Each section is *optional* in nature. Sections `padlock`, `settings`, `network`, `deployment`, and `blobs` are skipped when missing. Also, for the `settings` section, the configuration parameters are *optional* and when not provided the current setting is kept. - -### Update Datalogic Tools - -The following example will update the Datalogic tools on the device to the following versions: - -* DXU Agent 1.20.168 -* SoftSpot 1.8.92 - -```json -{ - "$schema": "http://json.schemastore.org/datalogic-scan2deploy-android", - "global": { - "auto-scan": true, - "target-path": "/sdcard/Download/" - }, - "deployment": { - "scheme": "https", - "host": "github.com", - "port": 443, - "path": "/datalogic/sandbox/raw/master/demo.zip" - } -} -``` +Documentation for Scan2Deploy Android may be found [here](https://datalogic.github.io/scan2deploy/android).