Managed Configurations via Code – A Fresh Approach Bridging GMS and AOSP

Esper is unique in the way we support AOSP (Android Open Source Project) devices. While GMS (Google Mobile Services) devices have access to Managed Google Play and can install approved Play Store apps like Chrome and apply a managed configuration to them, this isn’t available to AOSP devices or any devices using private enterprise apps.

For IT managers Google’s Play Store solution is understandable when configuring the applications used in their corporate workplaces for BYOD (bring your own device) scenarios. Esper, on the other hand, enables dedicated device fleets for specialized use cases. We needed a solution accessible across all Android devices that we support running Android 5 and above. 

In order to support AOSP we circumvented the Play Store completely. A Play Store implementation potentially requires IT managers to manually configure dozens of GUI options separately. In our solution we handle managed configurations using flexible JSON rather than a GUI. Configurations can be easily reduced to just what you need and then copy and pasted, opening up easy reuse as well as to scripting with our namespace API

Managed Configuration Options for Chrome in Managed Google Play

We previously covered how a managed configuration works with Google Chrome via our Cloud API. But many other apps support managed configurations, including apps that implement OEMConfig on supported devices to configure special OEM interfaces on a particular hardware model.

Not using Google Play Store for managed configurations lacks the benefits of a UI for listing all the managed configuration options of a particular app. Apps handle managed configurations differently, so it is best to ask the app’s developer which values the app supports or look for relevant documentation. Chrome lists its managed configuration options here. If documentation is not available, contact Esper for help. Otherwise, the app developer declares the available configurations in the APK’s (Android application package) manifest that Google Play uses to make the managed configurations available through their GUI. 

Using software like Android Studio, you can analyze that APK and view its managed configuration options under res/xml/app_restrictions.xml. A description of these options and their predefined values, if available, are further stored in res/resources.arsc to support localization.

Managed Configuration Options for the Spectralink Buttons APK

For example, using Spectralink’s Buttons OEMConfig app, the second option available is “button_left”, which determines the binding of the device’s left button. Its accepted values are “No action”, “Home key”, “Back key”, “Menu key”, “PTT”, “Alarm”, “Volume up”, “Volume down”, “Run application”, “open_url”, “Scanner”, “CUSTOM1”, “CUSTOM2”, “CUSTOM3”, and “CUSTOM4”.

Let’s try the “Run application” option. There is a corresponding configuration option below called “button_left_run_application” where we define the package name of the app we want to run when that button is pressed. For example, the preloaded camera app’s package name is “com.android.camera2”.

Together in a JSON managed configuration it looks like this:

{
  "button_left": "Run application",
  "button_left_run_application": "com.android.camera2"
}

We previously covered how the Esper Cloud API works for Google Chrome and is a great way for developers to automate managed configurations, but APIs are less accessible to most users and we needed to ease that burden. So how do you accomplish this using Esper’s Console?

Pick the device from Devices & Groups that you want a managed configuration applied to. Select Apps, and find the app that you wish to apply to. Click on the corresponding ellipsis on the right to open up the dropdown, and select Manage Configurations:

A dialog will appear. Drop in the corresponding JSON code for the intended managed configuration. Hit Apply, and the config is pushed out to the app. We save the JSON pushed to that device in the Manage Configurations dialog box. If you wish to push a different policy, click the Edit button, make the needed changes, and hit Apply.

JSON Code Pop-Up for Esper’s Managed Configurations

Verify that the managed configuration was successfully executed on the device by checking the Event Feed, but for offline devices the command will only be queued. If they come online with a 24 hour window, the change will be executed.

Esper Console Event Feed Showing Successful Execution of Managed Configuration Command

If you need to apply a managed configuration to an entire group, select the group properties and specify the package name on which to apply the managed configuration, and it will be pushed to all devices in the group regardless if they have that app. If they do not have the app, nothing changes. Go to Devices & Groups, select the properties of the group you want to change, select Apps at the top, and Manage Configurations below that:

Defining a Managed Configuration at the Group Level

You’ll notice that the number of online and offline devices are shown. You can decide if you want to target only the online devices or click the Queue requests for the offline devices option. Esper checks for any devices coming online over 24 hours. If they come back online within the window, the managed configuration is pushed out. If you need to go beyond 24 hours, our REST API enables more advanced functionality.

If you want to see the status of the group command either view the Event Feed or click the “i” button in the upper right-hand corner to display a status slide out. Click on Details to see the status of executing the command on the group’s individual devices. And  those that are queued because they are offline if that option was selected.

Viewing the Status of Pushing a Managed Configuration to a Device Group

In summary, Esper’s support for managed configurations allows you to apply this nifty configuration technique for apps that run on AOSP as well as GMS. Whether you use our Cloud API or Esper Console, we have your managed configuration needs covered. Questions? Don’t hesitate to reach out to us at support@esper.io.

0