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.
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
version: 1: The version of this software manifest, in this case version
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.distributionin 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 tag is the meta data declaration of the software manifest. The three required fields include:
version, and the
os: name: awesome-project
os version is a numeric, monotonically incremented, revision representation of the software manifest.
os: name: awesome-project version: 1
os configurations header is an enumeration of all the different software configurations for this software manifest (see definition)
configurations: example-header: example_settings: false
configurations are the software configurations that dictate everything from update policy, ui behavior, and even hardware behavior for a specific mason build.
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 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
apps: - name: TestApp1 package_name: com.test.app version_code: 1 - name: TestApp2 package_name: com.test.app2 version_code: 1
nameattribute defines an arbitrary name reference (for your own record keeping)
package_nameattribute comes from the package name as it's defined in the Android application's AndroidManifest
version_codeattribute 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
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 tag enumerates all the media configurations for the software distribution. Currently, only
bootanimation is supported.
media: bootanimation: name: test-boot version: 1
- For more details on creating a bootanimation, contact Mason Support.
- For more details on registering a bootanimation, see Registering Media Artifacts
- For a complete list of all project configuration options is avalable, see Project Configuration Options
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.