App Launchers

The app launcher framework is used to run an executable on a given platform, allowing its output/results to be used by other scripts or tools.

Making an App Launcher

In order to use this framework for your platform, there must be a method called “GetLauncher()” in the PlatformConfig class that your platform's “gyp_configuration.py” file refers to. It should load and return a module containing a class called “Launcher.” This class must inherit from the AbstractLauncher class in abstract_launcher.py, and must implement at minimum the following abstract methods:

  • Run(): Runs the executable, logs its output, and returns its return code. Generally, any app installation work is also done in this method.
  • Kill(): Kills the currently running executable and cleans up any leftover resources such as threads, processes, etc.

Once the above steps are implemented, tools that use this framework, such as Starboard's unit test runner, should work properly for your platform. For an example of a Launcher class, see this Linux implementation. For an example of the corresponding “GetLauncher()” method, see this gyp_configuration.py file.

Using an App Launcher

In order to use this framework in a Python tool, it must import abstract_launcher.py and call “abstract_launcher.LauncherFactory().” This method returns a Launcher object from the platform specified by its “platform” argument. To run the launcher, call its “Run()” method, and to stop it, call its “Kill()” method. If your tools need to access the Launcher‘s output while the executable is still running, have it start “Run()” in a separate thread; this will allow the main thread to easily read from the Launcher’s output file. For an example of creating and using a Launcher, see this example.