appinfo.json

Overview

The root of the application folder contains the appinfo.json document. It is a JavaScript file containing a JSON object. If the application is localized into more than one language, each language can have its own appinfo.json. However, the application title and version number in each localized appinfo.json must be the same as in the top-level appinfo.json. The application title and version in the top-level appinfo.json are validated for correct value and structure. Any application that fails the validation cannot be packaged or uploaded.

A note about JSON syntax:

  • Do not include any comments in json files (/* or //)
  • Use double quotes around properties--no single quotes.

The following table lists the fields in appinfo.json.

Fields

Property Required Description Example
icon No This is a file path relative to the appinfo.json file. The default is icon.png. "myicon.png"
id Yes This is the ID for this application. Every application has a unique ID, created from reverse DNS naming conventions. The launcher uses the ID to uniquely identify your application and displays it with the title above. The application ID is unique, set once, and cannot be changed after publishing the application. "com.newco.app.myApp"
main Yes The launch point for the app. This is a file path relative to the appinfo.json file and needs to point to an HTML file. It defaults to index.html. "index.html"
miniicon No Used for notifications. This is a file path relative to the appinfo.json file. The default is miniicon.png. "mini-icon.png"
noDeprecatedStyles No When set to true, suppresses loading of the global-deprecated.css style sheet, slightly improving the framework load time. true
noWindow No Is this app a headless app? (Default is false). Allowed values are true or false. false
plug-ins No Indicator of whether or not an app makes use of PDK plug-ins. Set to true if so. "true"
requiredMemory No Required if a PDK app. This is the maximum application memory usage in megabytes. 30
theme No When set to "light" the dark CSS styles are not loaded, slightly improving the framework load time. "dark"
title Yes The title of the application as it shows in the Launcher and the app window. The application title is unique, set once, and cannot be changed after publishing the application. "myApp"
type Yes Identifies the type of application. Currently this should be set to "web" if an SDK-based app or hybrid app, or "pdk" if a PDK-based app. "web"
vendor Yes A string representing the maker of the application. This is used in the launcher and deviceinfo dialogs. "newco"
vendorurl No A string representing a URL that turns the vendor portion in deviceinfo dialogs to hyperlinks.  
version Yes The application version number, in the format ... The major, minor, and revision numbers are all mandatory non-negative integers. Leading zeros are stripped. The major, minor, and revision numbers are discrete. For example, 1.5.3 is a lower version than 1.15.3. After uploading an application, the same version cannot be uploaded again. To update and re-upload an application, you must increase the version number. "1.0.3"

Although the framework does not use it, it is worth mentioning that the application launcher uses a params property, which it passes in its entirety to ApplicationService.launch(). The appinfo.json file can contain any other valid JSON a developer finds useful, which can then be accessed through Mojo.Controller.appInfo. For example, the Email and Calendar applications use this to specify an lwStages property that they pass to createStageWithCallback() to indicate whether or not lightweight stages should be used.

App ID

The appinfo.json object gives the system the information it needs to load and launch your application. The most important property is id, which must be unique for each application. The ID is used in service calls to identify the caller and in other ways serves as a unique application identifier. We recommend a reverse DNS naming convention, but you can use other schemes if the ID is guaranteed to be unique.

The app id must consist only of lowercase letters (a-z), digits (0-9), plus and minus signs, and periods. It must be at least two characters long and must start with an alphanumeric character.

Example

Here is a simple example of an appinfo.json object using the required fields and defaults. This is generated by the palm-generate command if you gave it "My App" as input for the application name.

{
  "title":    "MyApp",
  "type":     "web",
  "main":     "index.html",
  "id":       "com.yourdomain.app.myapp",
  "version":  "1.0.3",
  "icon":     "icon.png"
}

Just Type Integration

See Configuring appinfo.json for Just Type for information on additional parameters required to integrate Just Type functionality into your app.