CLI Reference Guide

After you mastered the basic concepts, you can come back to this page to learn what commands Odevio offers. You can learn more about individual Odevio commands with odevio COMMAND --help.

odevio

Command line tool to build & release your flutter apps easily.

How does it work ?

image explaining the Odevio-cli and Odevio-Remote architecture

The Odevio tool is composed of :

  • Odevio-Remote : The pre-configured build machines which handle the setup, build and release of your app

  • Odevio-cli : The CLI command line that works as an interface to start Odevio-Remote build machines

This reference guide only covers the Odevio-cli features.

Note

Odevio-Remotes are MacOS build machines on which the flutter build of your application is executed.

Usage:

odevio [OPTIONS] COMMAND [ARGS]...

Options

--version

Show the version and exit.

odevio apikey

Manage your API keys.

API keys are used to authenticate to the Odevio API with external programs.

Usage:

odevio apikey [OPTIONS] COMMAND [ARGS]...

odevio apikey ls

List your API keys.

Only the first 8 characters of the API key are shown. It is not possible to retrieve the full API key after it has been created.

odevio apikey ls [OPTIONS]

odevio apikey new

Create a new API key.

The key will only be shown once so be sure to copy it.

odevio apikey new [OPTIONS]

odevio apikey rm

Delete an API key.

You only need to provide the first 8 characters of the API key.

odevio apikey rm [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio app

Subcommands to manage your applications on Odevio.

odevio app [OPTIONS] COMMAND [ARGS]...

odevio app import

Imports an app identifier from Apple Developer to Odevio.

odevio app import [OPTIONS]

Options

--name <name>

Your app identifier name (e.g.: your app’s name)

--bundle-id <bundle_id>

The bundle ID for your app on Apple (e.g.: com.company.appname)

--account-key <account_key>

Odevio key to the Apple Developer Account

odevio app ls

Lists the app identifiers to which the logged in user has access.

Example output:

example output of the odevio ls command

Usage:

odevio app ls [OPTIONS]

odevio app mk

Creates a new app identifier.

..note: This will also create an app identifier with this bundle ID on your Developer Account. This allows us to verify the validity of your bundle ID

odevio app mk [OPTIONS]

Options

--name <name>

Your app identifier name (e.g.: your app’s name)

--bundle-id <bundle_id>

The bundle ID for your app on Apple (e.g.: com.company.appname)

--account-key <account_key>

Odevio key to the Apple Developer Account

odevio app rm

Deletes the app identifier with key “KEY” from Odevio and on Apple if specified.

odevio app rm [OPTIONS] [KEY]

Options

--delete-on-apple

Also delete the app identifier on Apple

Arguments

KEY

Optional argument

odevio app screenshots

Returns a link to the screenshot editor for the app with key “KEY”.

odevio app screenshots [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio apple

Subcommands to manage Apple specific settings for Odevio.

Access to an Apple developer account makes it possible for Odevio to retrieve and/or create all information necessary to create a build of your application that you will be able to publish on the app store.

A number of Apple specific objects is linked to each developer account and make it possible for Odevio to build iOS apps :

  • Certificates : The certificates resource represents the digital certificates you use to sign your iOS or Mac apps for development and distribution. These are managed automatically by Odevio.

  • Profiles : A provisioning profile is a collection of digital entities that uniquely ties developers and devices to an authorized iPhone Development Team and enables a device to be used for testing. These are managed automatically by Odevio.

  • Identifiers : Uniquely identifies your app throughout the Apple eco-system. These are imported or created in Odevio through command : $ odevio app

  • Devices : List of devices on which you want to be able to test your builds prior to release on the App Store. At least one device should be added to the device list for Odevio to be able to build apps.

These can be added, modified or deleted through https://developers.apple.com.

Danger

Deletion or modification of Certificates, Profiles or Identifiers managed by Odevio through https://developers.apple.com may break Odevio.

Usage :

odevio apple [OPTIONS] COMMAND [ARGS]...

odevio apple add

Add access to an Apple developer account for Odevio.

Warning

Once the developer account has been created there is no way to retrieve the private key from Odevio.

Note

We have no way to verify your developer account’s ID on Apple. In case of error, your builds will fail.

odevio apple add [OPTIONS]

Options

--apple-id <apple_id>

Required ID of your developer account on Apple

--name <name>

A user friendly name for Odevio

--key-id <key_id>

Required API key “Key ID” on App Store Connect

--issuer-id <issuer_id>

Required Issuer ID on App Store Connect

--private-key <private_key>

Required Path to the private key downloaded from App Store Connect

--team <team>

Key of the team to add the account to. Can be specified multiple times

odevio apple detail

Gets detailed information about your Apple Developer Account with key “KEY” on Odevio.

Returned information :

  • General information

  • Devices

  • Certificates

  • Provisioning profiles

Note

Odevio updates Apple Developer Account information automatically when starting a build with Odevio.

Example output :

example output of the odevio team ls command

Usage :

odevio apple detail [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio apple edit

Edit properties of a developer account linked to Odevio.

Note

We have no way to verify your developer account’s ID on Apple. In case of error, your builds will fail.

odevio apple edit [OPTIONS] [KEY]

Options

--apple-id <apple_id>

ID of your developer account on Apple

--name <name>

A user friendly name for Odevio

Arguments

KEY

Optional argument

odevio apple ls

Lists Apple Developer Accounts to which you have access.

Example output :

example output of the odevio apple ls command

Usage :

odevio apple ls [OPTIONS]

odevio apple refresh-devices

Synchronizes the list of devices on Odevio with the Apple Developer account

This command is used when you have just added or removed a new device from your Apple Developer account and you need it on Odevio.

odevio apple refresh-devices [OPTIONS] [KEY]

Options

-q, --quiet

Flag to know if the refreshed list of devices should be hidden or not

Arguments

KEY

Optional argument

odevio apple rm

Removes access to Apple Developer account with key “KEY” for Odevio.

This does not remove the Apple Developer account from Apple, it only removes the link between Odevio and Apple.

..note::

This will also remove every application, every build, every devices, every certificate, every profile and every objects related to that Apple Developer account on Odevio (it will not remove these from Apple).

odevio apple rm [OPTIONS] [KEY]

Options

--yes

Confirm the action without prompting.

Arguments

KEY

Optional argument

odevio build

Subcommands to build an app and track builds.

When starting a new project commands are mostly executed in this order :

  1. odevio build start --build-type="configuration [DIRECTORY]" to create an Odevio-Remote with the right environment for your application.

  2. odevio build connect to get your connection settings and access the Appolo Remote on which you can test and setup your application with XCode.

  3. odevio build stop to stop your Appolo Remote when you’re done editing your settings.

  4. odevio build patch to retrieve the changes made on the Odevio-Remote.

  5. git apply odevio.patch to apply the changes locally.

  6. odevio build start [OPTIONS] [DIRECTORY] to build your app with Flutter and generate an IPA or to publish your app on the App Store.

Usage:

odevio build [OPTIONS] COMMAND [ARGS]...

odevio build connect

Get the connection information for an Odevio-Remote linked to a build.

This command is mainly used when it is needed to connect to the Odevio-Remote with a Remote Desktop client :
- Xcode configuration
- Debugging and detailed log analysis
- Correcting code and restarting a build after failure
- Testing the application on the iPhone or iPad simulator.

This command will start an Odevio-Remote and return connection settings and credentials for you to connect with a remote desktop client to the Odevio-Remote.

Note

Odevio-Remotes are active for 30 minutes before being closed automatically.

Note

Odevio-Remotes are MacOS build machines on which the flutter build of your application is executed.

Note

The connection uses the VNC protocol, your Remote Desktop client must support it to allow you to use an Odevio-Remote.

odevio build connect [OPTIONS] [KEY]

Options

--tunnel-port <tunnel_port>

Start a reverse SSH tunnel, forwarding to this port. Note: this only applies to configuration builds

--tunnel-host <tunnel_host>

If –tunnel-port is specified, this is the host to forward to (defaults to localhost)

--tunnel-remote-port <tunnel_remote_port>

If –tunnel-port is specified, this is the port on the VM (defaults to the same port, except for 22 and 5900)

-y, --yes

Automatically create an Odevio Remote if your build was not setup for remote desktop

Arguments

KEY

Optional argument

odevio build detail

Fetches detailed information of a build.

Returns the location of the logs and application artifacts.

odevio build detail [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio build download

Get the modified source code of a build.

This command is used when a build is finished or stopped to retrieve its entire directory on the remote machine.
odevio build download [OPTIONS] [KEY]

Options

-o, --output <output>

Output filename (default: source.zip)

Arguments

KEY

Optional argument

odevio build flutter-versions

Lists the Flutter versions available on Odevio.

odevio build flutter-versions [OPTIONS]

odevio build ipa

Get the ipa file of a build.

This command is used when a build of type ad-hoc, ipa, validation or publication has succeeded.
It returns an url to get the IPA, either to download it, or to install it if opened from an iOS device.
odevio build ipa [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio build logs

Outputs the logs of a build

Note

Logs are printed only when a command has finished its execution. In particular, Flutter logs are only printed when the flutter command execution has ended.

odevio build logs [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio build ls

Lists builds on Odevio.

odevio build ls [OPTIONS]

Options

-a, --all

shows your builds and the builds from your teams

odevio build patch

Retrieve a patch that gathers all changes made to the source code of a build.

This command is used when a build is finished and succeeded or when you have stopped an Odevio Remote on which you configured an app with XCode.

Note

The patch was made on a blank Git repo.

odevio build patch [OPTIONS] [KEY]

Options

-o, --output <output>

Output filename (default: odevio.patch)

Arguments

KEY

Optional argument

odevio build rm

Deletes a build and its corresponding Odevio-Remote.

Note

Odevio-Remotes are MacOS build machines on which the flutter build of your application is executed.

odevio build rm [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio build start

Start a new build from scratch

DIRECTORY : Home directory of the flutter project. If not provided, gets the current directory.

The Odevio tool is composed of:

  • Odevio-Remote : The pre-configured build machines which handle the setup, build and release of your app

  • Odevio-cli : The CLI command line that works as an interface to start Odevio-Remote build machines

odevio build start [DIRECTORY] --build-type <build-type> creates an Odevio-Remote and builds the app either for development, ad-hoc, distribution, validation or publication

  • Configuration: launch an Odevio-Remote to allow you to configure your project on XCode

  • Development : builds the app for testing on an iOS simulator.

  • Ad-hoc : Build an .ipa file for testing on the devices listed in your developer account. For the list of devices check odevio apple detail <apple-dev-account-key>.

  • Distribution : Build an .ipa file that can be distributed on any device.

  • Validation : Build an .ipa file and validates that it can be released on the App Store.

  • Publication : Build an .ipa file and publish it on the App Store. Once this build succeeds you have to go on the App Store to complete information and screenshots related to your new application version.

Killing this command will not stop the build. You can check the progress of all your Odevio-Remotes by running odevio build ls or get detailed information by running odevio build detail and selecting your build.

To avoid having to specify all the parameters each time, you can create a .odevio file in the directory where the command is run. Each parameter is specified on a line in the form PARAM=VALUE. For example:

app-key=123
flutter=3.0.0
minimal-ios-version=11.0

All files and directories in the provided directory will be uploaded, except:

  • build/

  • windows/

  • linux/

  • .dart_tool/

  • .pub-cache/

  • .pub/

  • .git/

  • .gradle/

  • source.zip

  • .app.zip

  • odevio.patch

You can also specify additional files and directories in a .odevioignore file, with each files and directories you want to ignore on separate lines, with directories ending with ‘/’

odevio build start [OPTIONS] [APP_KEY] [DIRECTORY]

Options

--build-type <build_type>

Build type

Options

configuration | development | ad-hoc | distribution | validation | publication

--flutter <flutter>

Flutter version for your build (example “2.8.1”). Use odevio build flutter-versions to see all available versions

--minimal-ios-version <minimal_ios_version>

Minimal iOS version for you application (example “9.0”)

--app-version <app_version>

App version to set for this build (for example “1.3.1”). If not set, the version in pubspec.yaml will be used

--build-number <build_number>

Build number to set for this build (the number after ‘+’ in the version in pubspec.yaml). If not set, the build number in pubspec.yaml will be used

--mode <mode>

Mode to build the app in. Defaults to release

Options

release | profile | debug

--target <target>

The main entry-point file of the application. Defaults to lib/main.dart

--flavor <flavor>

Custom app flavor

--post-build-command <post_build_command>

Command to run after the build has finished. Can be specified multiple times.

--tunnel-port <tunnel_port>

Start a reverse SSH tunnel when the build is started, forwarding to this port. Note: this only applies to configuration builds

--tunnel-host <tunnel_host>

If –tunnel-port is specified, this is the host to forward to (defaults to localhost)

--tunnel-remote-port <tunnel_remote_port>

If –tunnel-port is specified, this is the port on the VM (defaults to the same port, except for 22 and 5900)

--no-progress

Do not display the progress and exit the command immediately.

--no-flutter-warning

Do not display a warning if no flutter version is specified and the local flutter version does not match the build version.

Arguments

APP_KEY

Optional argument

DIRECTORY

Optional argument

odevio build stop

Stops a running build

odevio build stop [OPTIONS] [KEY]

Arguments

KEY

Optional argument

odevio build tunnel

Create a reverse ssh tunnel between this computer and the VM

This allows you to access a port of this computer or any host accessible frow this computer, from the VM.

For example if you have a web server running on port 8000, type the command

odevio build tunnel –port 8000

and your web server will be accessible on the VM at localhost:8000, which will enable you to run your app in the simulator while connecting to your local web server.

odevio build tunnel [OPTIONS] [KEY]

Options

--port <port>

Required Port to forward to

--remote-port <remote_port>

Port on the VM (defaults to the same port, except for 22 and 5900)

--host <host>

Host to forward to (defaults to localhost)

Arguments

KEY

Optional argument

odevio profile

Profile of the logged in user.

Example output :

example output of the odevio profile command

The top part displays the user account information and the location of the Odevio config.ini file on your system.

The bottom part either :

  • Displays the list of Teams to which the logged in user has access. The Admin field is shown in green if the logged in user is the admin of the team.

  • Is not shown if the logged in user has no teams or has not been added to any teams.

Usage :

odevio profile [OPTIONS]

Options

--ini

Highlight config.ini path

odevio signin

Logs in to your Odevio account.

Login is based on e-mail and password. This command stores the connection token for future commands in a config.ini file. To get the location of the config.ini file run odevio profile --ini once connected.

odevio signin [OPTIONS]

Options

--email <email>
--password <password>

odevio signout

Log out of your Odevio account.

This command deletes the connection token from the config.ini file associated with Odevio. To get the location of the config.ini file run odevio profile --ini

odevio signout [OPTIONS]

odevio signup

Creates an Odevio user account.

E-mail, username and password are required

odevio signup [OPTIONS]

Options

--email <email>
--username <username>
--password <password>

odevio team

Subcommands to manage teams and corresponding users.

A user can be part of multiple teams. Each team has only one admin. The admin can add or remove users based on their username.

The team system is used in case a user wants to share access to his Apple Developer Account, his app identifiers or his builds to other developers with whom he collaborates.

Warning

If an object (App or Apple Developer Account) is linked to a team then all members of this team have full control over the object.

Usage :

odevio team [OPTIONS] COMMAND [ARGS]...

odevio team ls

Lists the teams to which the logged in user has access.

Returns a list with :

  • General team information

  • List of team members

  • List of app identifiers in the team

  • List of Apple Developer accounts to which the team has access

Example output :

example output of the odevio team ls command

Usage :

odevio team ls [OPTIONS]

odevio team member

Commands to manage team members.

odevio team member [OPTIONS] COMMAND [ARGS]...
odevio team member add

Adds a user to a team.

odevio team member add [OPTIONS] [KEY]

Options

--username <username>

username of the new team member

Arguments

KEY

Optional argument

odevio team member rm

Removes a user from a team.

odevio team member rm [OPTIONS] [KEY]

Options

--username <username>

username of the team member to remove

--yes

Confirm the action without prompting.

Arguments

KEY

Optional argument

odevio team mk

Creates a team and sets the logged in user as team admin.

odevio team mk [OPTIONS]

Options

--name <name>

odevio team rm

Deletes a team.

odevio team rm [OPTIONS] [KEY]

Options

--yes

Confirm the action without prompting.

Arguments

KEY

Optional argument