Project Configuration

What is a Project Config?

The Mason Project Configuration is a versioned manifest of the software and software configurations that can be deployed to devices in a group.

Creating a Project Config

Project Configuration files are represented in the YAML file format. To create a Project Configuration YAML, open a new text file in your favorite text editor and start defining your project details.

To get a quick start, copy the Example Project Configuration into the text file and “Save As”, renaming the file extension to .yml. From there you can customize the configurations, app, and media enumerations however you’d like.

Notes For YAML Format

The YAML file format has a strict syntax policy that will have to be followed for the Mason Platform to accept a configuration file. For further YAML syntax information, see https://en.wikipedia.org/wiki/YAML#Syntax.

Available Configurations

To view all available configurations, visit the Configuration Glossary.

Example Project Config

Example snippet Warehouse Distribution Configuration (see breakdown below)

os:
  name: warehouse-distribution
  version: 1
  configurations:
    mason-management:
      disable_keyguard: true
      disable_status_bar: false
    mason-fota:
      config_allow_download_over_metered: false
      config_update_check_frequency: 6
      config_update_install_time: "12:30"
      config_update_install_battery_threshold: 20
      config_update_prompt_prior_to_install: true
    mason-app-updater:
      config_allow_download_over_metered: true
      config_update_check_frequency: 12
      config_update_install_time: "01:00"
      config_update_install_battery_threshold: 20

apps:
  - name: TestApp
    package_name: com.warehouses.distribution
    version_code: 12

media:
  bootanimation:
    name: warehouse-distro-boot
    version: 1

Breakdown of the software manifest

  • os: (see definition)
    • name: warehouse-distribution: The project identifier that is known in the Mason Platform Project Dashboard, in this case warehouse-distribution
    • version: 1: The version of this software manifest, in this case version 1 (see definition)
    • configurations:: An enumeration of all the different software configurations for this software manifest (see definition)
  • apps: (see definition)
    • - name: TestApp: The name tag begins the definition of the application to be included, the name is an arbitrary name reference
    • package_name: com.warehouses.distribution: Defines the package name of the APK, com.warehouses.distribution in this case.
    • version_code: 12: Defines the versionCode of the APK, as it is packaged in the APK.
  • media: (see definition)
    • bootanimation:: The bootanimation tag begins the definition of a bootanimation to be used in the software distribution.
    • name: warehouse-distro-boot: Defines the name of the bootanimation as it has been registered to the mason platform to be included in this software distribution. warehouse-distro-boot, in this case.
    • version: 1: Defines the version of the bootanimation as it has been registered to the mason platform to be included in this software distribution. Version 1, in this case.

“os” Definition

The os tag is the meta data declaration of the software manifest. The three required fields include: name, version, and the configurations header.

Name

The os name describes the Project Identifier as it is known in the Mason Platform Project Dashboard. It needs to be identical to the Project Identifier.

os:
  name: awesome-project

Version

The os version is a numeric, monotonically incremented, revision representation of the software manifest.

Example:

os:
  name: awesome-project
  version: 1

Configurations

The os configurations header is an enumeration of all the different software configurations for this software manifest (see definition)

Example:

configurations:
  example-header:
    example_settings: false

“configurations” Definition

configurations are the software configurations that dictate everything from update policy, ui behavior, and even hardware behavior for a specific mason build.

Each configuration is described by a header and a key value pair that dictates the setting.

As an Example:

configurations:
  mason-management:
    disable_keyguard: true
    disable_status_bar: false

The configuration definition above dictates that the keyguard(lockscreen) should be disabled on this software distribution, while the status bar should not be. To view all available configurations, visit the Configuration Glossary.

“apps” Definition

The apps tag enumerates all the registered Android applications that are to be included into the software build.

Each app is shown an as item in a list.

Single App Example:

apps:
  - name: TestApp
    package_name: com.test.app
    version_code: 1

Multiple Apps:

apps:
  - name: TestApp1
    package_name: com.test.app
    version_code: 1
  - name: TestApp2
    package_name: com.test.app2
    version_code: 1
  • The name attribute defines an arbitrary name reference (for your own record keeping)
  • The package_name attribute comes from the package name as it’s defined in the Android application’s AndroidManifest
  • The version_code attribute comes from the package as it’s defined in either the gradle build file or the Android application’s AndroidManifest
  • For more details on registering an Android application, see Registering APK Artifacts

Notes

You must provide both the package_name and the version_code for the application in the declaration. You must also verify that the version of the application has been registered to the Mason Platform.

“media” Definition

The media tag enumerates all the media configurations for the software distribution. Currently, only bootanimation is supported.

Example:

media:
  bootanimation:
    name: test-boot
    version: 1

Notes

You must provide both the name and the version for the bootanimation in the declaration. You must also verify that the version of the bootanimation has been registered to the Mason Platform.