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 ?
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 link
Links an app identifier to Odevio team with key “KEY”.
Warning
All users who are in a team linked to an Apple Developer Account have full control over it.
odevio app link [OPTIONS] [KEY]
Options
- --team-key <team_key>
Key of the team to link
Arguments
- KEY
Optional argument
odevio app ls
Lists the app identifiers to which the logged in user has access.
Example output:
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 app unlink
Links or unlinks an app identifier to Odevio team with key “KEY”.
odevio app unlink [OPTIONS] [KEY]
Options
- --team-key <team_key>
Key of the team to link
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 :
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 link
Links the developer account with key “KEY” to an Odevio team.
By default a newly added Apple Developer Account created on Odevio is only linked to the user having created it. When using this command you can link the Apple Developer Account directly to one of your teams on Odevio giving full access to your team members.
Warning
All users who are in a team linked to an Apple Developer Account have full control over it.
Note
Once the developer account has been created, there is no way to retrieve the private key from Odevio. Making it impossible for team members to “steal” your Apple Developer account.
odevio apple link [OPTIONS] [KEY]
Options
- --team-key <team_key>
Key of the team to link
Arguments
- KEY
Optional argument
odevio apple ls
Lists Apple Developer Accounts to which you have access.
Example output :
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 apple unlink
Unlinks the developer account with key “KEY” from an Odevio team.
odevio apple unlink [OPTIONS] [KEY]
Options
- --team-key <team_key>
Key of the team to unlink
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 :
odevio build start --build-type="configuration [DIRECTORY]"
to create an Odevio-Remote with the right environment for your application.
odevio build connect
to get your connection settings and access the Appolo Remote on which you can test and setup your application with XCode.
odevio build stop
to stop your Appolo Remote when you’re done editing your settings.
odevio build patch
to retrieve the changes made on the Odevio-Remote.
git apply odevio.patch
to apply the changes locally.
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 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 1 hour 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.
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.
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.
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 :
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 :
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