How to create an application

An application can be created using the Anbox Cloud dashboard or through the CLI.

Any application must be created first to be available on the Anbox Cloud cluster. The internal process will prepare an instance based on the currently available image with the application package installed. This instance is then used for any newly launched instances to support fast boot times.

Prerequisites

To create a new application, you need an Application manifest and optionally an Android Package (APK) with support for target architecture.

The application manifest is a yaml file and is used to define various attributes of your application.

A default application manifest is created based on the Resource type you choose for your application. You can further customise various attributes of your application including the resource requirements for your application.

An example manifest file:

name: candy
image: default
boot-activity: com.canonical.candy.GameApp
required-permissions:
  - android.permission.WRITE_EXTERNAL_STORAGE
  - android.permission.READ_EXTERNAL_STORAGE
addons:
  - ssh
tags:
  - game
extra-data:
  com.canonical.candy.obb:
    target: /data/app/com.canonical.candy-1/lib
  game-data-folder:
    target: /sdcard/Android/data/com.canonical.candy/
watchdog:
  disabled: false
  allowed-packages:
    - com.android.settings
services:
  - name: adb
    port: 5559
    protocols: [tcp]
    expose: false
resources:
  cpus: 4
  memory: 4GB
  disk-size: 8GB

An application can be created from a directory, a zip archive or a tarball file. If you cannot use a directory, the second best option is to use a zip archive that provides better optimisation when compared to a tarball.

If you are using a directory or a zip archive, ensure that the directory/zip contains the manifest.yaml file. You can also optionally include app.apk and extra-data.

If you are using a tarball file, compress the file with bzip2 and use the same components and structure as the directory.

A zip archive file can be created with the following command:

zip -r foo.zip <package-folder-path> app.apk extra-data manifest.yaml

A tarball can be created with the following command:

tar cvjf foo.tar.bz2 -C <package-folder-path> app.apk extra-data manifest.yaml

Note

Due to Snap strict confinement, the directory/zip archive/tarball must be located in the home directory.

When you are ready, run:

amc application create <path/to/application_content>

When the create command returns, the application package is uploaded to the Anbox Management Service (AMS) which starts the bootstrap process.

Remember that the application is not yet ready to be used. You can watch the status of the application with the following command:

amc application show <application_id>

The returned output looks similar to the following:

id: bcmap7u5nof07arqa2ag
name: candy
status: initializing
published: false
config:
  instance-type: a4.3
  boot-package: com.canonical.candy
versions:
  0:
    image: bf7u4cqkv5sg5jd5b2k0 (version 0)
    published: false
    status: initializing
    addons:
    - ssh
    boot-activity: com.canonical.candy.GameApp
    required-permissions:
    - android.permission.WRITE_EXTERNAL_STORAGE
    - android.permission.READ_EXTERNAL_STORAGE
    extra-data:
      com.canonical.candy.obb:
        target: /data/app/com.canonical.candy-1/lib
      game-data-folder:
        target: /sdcard/Android/data/com.canonical.candy/
    watchdog:
      disabled: false
      allowed-packages:
      - com.android.settings
    services:
    - port: 5559
      protocols:
      - tcp
      expose: false
      name: adb
resources:
  cpus: 4
  memory: 4GB
  disk-size: 8GB

Once the status of the application switches to ready, the application is ready and can be used. See How to wait for an application for information about how to monitor the application status.