mojo_run

mojo_run allows you to run a Mojo shell either on the host, or on an attached Android device.

mojo_run APP_URL  # Run on Linux host.
mojo_run APP_URL --android  # Run on Android device.
mojo_run "APP_URL APP_ARGUMENTS"  # Run an app with startup arguments

mojo version

mojo_run will download mojo shell and configure it to use mojo: apps built at the corresponding version, if you pass the git commit sha of the https://github.com/domokit/mojo repository as --mojo-version:

mojo_run APP_URL --mojo-version SOME_HASH

If your project uses a pinned version of mojo, you can put the pinned hash in a MOJO_VERSION file in any ancestor directory of mojo_run. This will make mojo_run infer the parameter automatically.

If you don't want to use prebuilt binaries at the given version, you can configure the shell binary and the origin to use manually:

mojo_run APP_URL --shell-path path/to/shell/binary --origin ORIGIN_URL

Running applications in a view

Some applications implement ViewProvider and are run embedded in a view. To run these, you can pass the app url using the --embed flag:

mojo_run --embed APP_URL [--android]

Running multiple instances simultaneously

mojo_run sets up development servers on fixed ports to facilitate caching between runs and allow the script to work remotely using adb_remote_setup. This would normally prevent two or more instances of mojo_run from running simulatenously as the development servers cannot be spawned twice on the same ports.

In order to run the same set of binaries simultaneously one can use the --reuse-servers switch for second and further instances. This will make the second and further instances assume that development servers are already spawned.

On Android one needs to indicate the id of the device to be targeted in each run. For example, we could run the following in one shell:

mojo_run APP_URL --android --target-device DEVICE_ID

and the following in another:

mojo_run APP_URL --android --target-device ANOTHER_DEVICE_ID --reuse-servers

Device id can be obtained from adb devices.

On Linux one needs to use a different $HOME directory for each run, to avoid collision of the cache storage. For example, we could run the following in one shell:

mojo_run APP_URL

and the following in another:

mkdir ~/another_home
HOME=~/another_home mojo_run APP_URL --reuse-servers