Who is this overview for?
- Mobile device administrators who will build deployment packages for Concierge.
- Developers who will make sample management configuration for custom managed applications.
Building a package
To build a package, create a directory with an appropriate name for the package. In this directory, you should include the following folders and files:
- packages/ Required
- platform/ Optional
- prebuilt/ Optional
- version.nfo Required
NOTE: Both the version.nfo file and the packages folder are required.
Overview of packages folder
The packages folder contains additional folders. These may either be package specific folders or folders to contain .apk files for installing applications.
Folders for APK installation
Place .apk files in either of the following folders:
Place all .apk files to be installed on devices by management in the apks/ folder. There is no guaranteed ordering of .apk files placed in the apks/ folder.
NOTE: Never assume a particular package will be installed before another
Most applications are completely self-contained. Permissions defined by an application generally are not used by an application in another .apk file. If you have applications that require a permission defined in a separate .apk file, the .apk file which defines the permission must be placed in the providers/ folder.
The providers/ folder exists to give you two priority levels for installing applications on the Concierge. All .apk files placed in the providers/ folder will be installed before any .apk files placed in the apks/ folder. If you are developing application suites which require more than two priority levels for installation, you may consider flattening the application dependencies down to two levels.
The most notable example I can provide is package A define permission "foo". Package B uses permission "foo" but contains a ContentProvider which defines its own read-write permissions "read_bar" and "write_bar". Package C then requires the "read_bar" permission. This would require A to be installed before B and B to be installed before C.
To fix this issue, define all of the permissions for the ContentProvider of package B in package A. As a result, package B's ContentProvider would refer to permissions previously defined in A. Package C now also refers to the same permissions defined in A. This reduces the problem into two priority levels. B no longer has to be installed before C.
Package specific folders
The manifests for manageable Concierge applications define the names of package specific folders. For example, if an application had the package name "com.example.package" defined in its manifest, a folder named "com.example.package" should be placed in the packages folder.
Inside of a specific package folder, the following folders may exist:
The actions/ folder contains any custom management service actions. If a management service declares an intent-filter that handles action with the name "some.unique.action.name", you must have a folder in the actions folder named "some.unique.action.name/". Inside of this folder, you should place the file expected by the management service. Because management services are free to parse any sort of file, there is no universal standard for the format of this file. Consult the documentation for the management service being considered.
In addition as a form of shorthand, if the action name for a management service is of the form
concierge.management.intent.action.<SOME_UPCASED_NAME>, you may shorten the name of the folder for the action to "<SOME_UPCASED_NAME>/" instead of "concierge.management.intent.action.<SOME_UPCASED_NAME>/".
NOTE: his only applies to actions prepended with concierge.management.intent.action
The preferences/ folder contains any managed preferences for the package defined by the managed Concierge application. This folder should only contain xml files named according to the documentation for the managed Concierge application.
About managed preferences
Managed preferences are used to specify configuration settings that can be changed by both application code and management updates. Managed preferences store a flat list of named configuration values of the following types:
No other types are allowed to be used as a managed preference. While Concierge does not officially support additional types, additional types could be supported by custom serialization of a managed preference of type String. If that is unacceptable, consider using a custom management service.
An example managed preference configuration file is as follows:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<boolean name="fooBoolean" value="true"/>
<long name="fooLong" value="12345678901"/>
<int name="fooInt" value="42"/>
<float name="fooFloat" value="1.2345"/>
NOTE: Strings within the set are not named and must be unique.
More about management service actions
Management services allow developers to write custom configuration services that may accept data in a format differing from a managed preference file. For example, if an application has a background image that is subject to change, a managed service may be written to accept an image file as its input instead of a more standard .xml or .json configuration file.
The platform folder
To update devices in the field to a new version of the Concierge platform, place the mdz file distributed by Motorola Solutions in the folder named platform/.
The prebuilt folder
When building an mdz, sometimes you cannot distribute the original configuration except on a need to know basis (such as passwords in plaintext). To include a previously built mdz's configuration, place the previously built mdz in the prebuilt/ folder.
The version.nfo file
The version.nfo file is a properties file (in the sense of a Java properties file). It declares the versions this management data set desires to be built against. The following entries in the file are required:
mdz_version contains the version of the mdz format you would like to use. For now, the current mdz format is:
mpb_version contains the version of the mpb building the management package. As of launch, this version is:
The mpb_version states the version of the Management Package Builder required to build the current package. This should not often change. In future releases, this is subject to change.
Using the Management Package Builder tool
The Management Package Builder (MPB for short) is a tool used to take a package defining folder structure and turn it into a .mdz file which may then be placed on a device through a MDM solution or locally by a USB drive. In order to use the MPB, it is provided in the Concierge SDK Add-On.
1. Open a file browser window.
2. Browse to the mpb.exe included in the Concierge SDK.
3. In a separate file browser window, view the folder above the folder containing the version.nfo file for the desired management configuration.
Example: I have version.nfo in C:\Users\JRandomUser\management_configs. I will navigate my file browser to C:\Users\JRandomUser.
4. Click and drag the folder containing the management configuration onto the mpb.exe in the other file browser window.
5. If all is successful, in a couple moments, the mpb.exe will place a .mdz next to the folder used.
Example: I dragged C:\Users\JRandomUser\management_configs\ onto mpb.exe. After a few moments, I will see C:\Users\JRandomUser\management_configs.mdz in my browser window.
Download Management Package Builder (MPB) tool
We offer the MPB tool as a download for Windows (see thread below). It also contains an example MDZ template that shows all the options that can be configured for remote management.