GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Skip
  • Documentation
  • Blog
  • Sponsor
  • Forums
  • Slack
  • Mastodon
  • Twitter
  • GitHub
  • RSS
  • Getting Started
  • Project Structure
  • Lite and Fuse Modes
  • App Development

This view

  • Original page
  • New address

GeezerVison is showing skip.dev — Skip CLI Reference

Skip CLI Reference

The Skip command-line interface (CLI) is a tool that can be run from the terminal on macOS, Linux, or Windows. It provides an interface for creating new Skip projects (both framework and app projects), building and testing for Android, managing the Swift Android SDK and emulators, and exporting built artifacts for publication.

Installing

Section titled “Installing”

The skip CLI is installed using Homebrew ↗. Skip is distributed as a binary Homebrew “Cask” for macOS, Linux, and Windows (with WSL 2 ↗). For complete details, see the Getting Started Guide.

Once Homebrew is set up, Skip can be installed (and updated) by running the Terminal command:

Terminal window
brew install skip

This will download and install the skip tool itself, as well as the Android SDK dependencies that are necessary for building and testing the Kotlin/Android side of your apps.

To upgrade to the latest version:

Terminal window
skip upgrade

Note

The skip tool installed via Homebrew is the exact same binary that is used by the Skip Xcode plugin, but they are installed in separate locations and updated through different mechanisms (the Homebrew Cask ↗ for the CLI and the skip/Package.swift ↗ for the SwiftPM plugin).

Caution

Linux and Windows support is preliminary and currently doesn’t support many features, but it can be used for creating, building, testing, and exporting framework projects as well as running the skip android frontend for the Swift SDK for Android. For creating and building full app projects, macOS is required.


Command Overview

Section titled “Command Overview”
USAGE: skip <subcommand>
SUBCOMMANDS:
version Print the skip version
doctor Evaluate and diagnose Skip development environment
checkup Run tests to ensure Skip is in working order
upgrade Upgrade to the latest Skip version
create Create a new Skip project interactively
init Initialize a new Skip project
verify Verify Skip project
icon Create and manage app icons
app Build, run, and manage Skip apps
android Build, run, and test Swift packages for Android
export Export the Gradle project and built artifacts
devices List connected devices and emulators/simulators
test Run parity tests and generate reports

Run skip help <subcommand> for detailed help on any command, or skip <subcommand> --help for the full list of flags.

Common Flags

Section titled “Common Flags”

Most commands share a set of common option groups:

Output Options control how results are displayed:

FlagDescription
-v, --verboseDisplay verbose messages
-q, --quietSuppress output
-J, --jsonEmit output as formatted JSON
-j, --json-compactEmit output as compact JSON
-M, --message-plainShow messages as plain text
--plain/--no-plainDisable colors and progress animations
--log-file <path>Write log output to a file

Tool Options override the default paths for external tools:

FlagDescription
--swift <path>Swift command path
--gradle <path>Gradle command path
--adb <path>ADB command path
--emulator <path>Android emulator path
--sdkmanager <path>Android SDK Manager path
--avdmanager <path>Android AVD Manager path
--java-home <path>Path to JAVA_HOME

Project Commands

Section titled “Project Commands”

skip create

Section titled “skip create”

Create a new Skip project through interactive prompts. This will ask you to choose between a native (Fuse) or transpiled (Lite) project, app or library, and walk you through configuration options.

Terminal window
skip create

For non-interactive project creation, use skip init instead.

skip init

Section titled “skip init”

Initialize a new Skip project with a single command. This is the non-interactive alternative to skip create.

Terminal window
# Create a native (Fuse) app project
skip init --native-app --appid=com.example.myapp my-app MyApp
# Create a transpiled (Lite) app project
skip init --transpiled-app --appid=com.example.myapp my-app MyApp
# Create a native library project
skip init --native-model my-lib MyModule
# Create a transpiled library project
skip init --transpiled-model my-lib MyModule
# Create an app with multiple modules
skip init --native-app --appid=com.example.myapp my-app MyApp DataModel

Key flags:

FlagDescription
--native-appCreate a Skip Fuse (native compiled) app
--transpiled-appCreate a Skip Lite (transpiled) app
--native-modelCreate a native library module
--transpiled-modelCreate a transpiled library module
--appid <bundleID>Bundle identifier for app projects
--open-xcodeOpen the project in Xcode after creation
--icon <path>Path to an icon image (SVG, PDF, or PNG)
-c, --configuration <c>Build configuration: debug or release

Tip

After creating a project, run it in Xcode against an iPhone simulator destination. The Skip build plugin will automatically build the Android side and launch it on a running emulator simultaneously.

skip verify

Section titled “skip verify”

Validate the structure and configuration of a Skip project. Checks Package.swift layout, skip.yml files, and module dependencies.

Terminal window
# Verify the current project
skip verify
# Verify a specific project
skip verify --project path/to/project
# Attempt to automatically fix issues
skip verify --fix

skip icon

Section titled “skip icon”

Create and manage app icons for both iOS and Android. Generates all required sizes from a single input image.

Terminal window
# Resize a PNG for all required icon sizes
skip icon app_icon.png
# Generate icons with a colored background and SVG overlay
skip icon --background #5C6BC0-#3B3F54 symbol.svg
# Preview the generated icons
skip icon --open-preview --random-icon --random-background

Key flags:

FlagDescription
--background <color>Background color or gradient (e.g. skyblue or #3E8E41-#2F4F4F)
--inset <decimal>Amount of inset around the image
--shadow <decimal>Shadow radius around the icon
--android <path>Separate icon file for Android
--darwin <path>Separate icon file for iOS/macOS

skip export

Section titled “skip export”

Build and export Skip modules as distributable artifacts. Libraries are exported as .aar files and apps as .apk/.aab files.

Terminal window
# Export debug archives
skip export --debug
# Export a specific module
skip export --module ModuleName
# Export to a custom output folder
skip export --dir output/

skip app launch

Section titled “skip app launch”

Build and launch a conventional Skip app on the booted iOS Simulator and a running Android emulator together in one step. Reads PRODUCT_NAME and PRODUCT_BUNDLE_IDENTIFIER from Skip.env, then drives xcodebuild, xcrun simctl install, and xcrun simctl launch for iOS while letting the Skip build plugin handle the Android Gradle build and install via adb.

Terminal window
# Build and launch on both iOS simulator and Android emulator (default)
skip app launch
# Build and launch a release build
skip app launch --configuration release
# Build and launch only the iOS app on the booted simulator
skip app launch --ios
# Build and launch only the Android app via the Skip plugin
skip app launch --android

Pre-flight:

  • The project must be a conventional Skip app project, meaning it contains a Project.xcworkspace, a Skip.env configuration file, and Darwin/ and Android/ folders alongside Package.swift. skip init --transpiled-app and skip init --native-app produce projects in this shape.
  • You must boot an iOS Simulator yourself (xcrun simctl boot <UDID>; open -a Simulator) and start an Android emulator (emulator -avd <name> or skip android emulator launch). skip app launch does not start either for you. If no simulator is booted the iOS install step fails; if no emulator is running the Android install step fails.
FlagPurpose
-c, --configuration <config>Build configuration, debug (default) or release.
--iosBuild and launch only the iOS app. Sets SKIP_ACTION=none in the xcodebuild environment so the build plugin skips the Android phase.
--androidBuild and launch only the Android app. iOS is built but not installed or launched.
--project <dir>Project folder. Defaults to the current directory.

When you have both a USB-connected Android device and a running emulator, scope the install to the emulator with the standard ANDROID_SERIAL environment variable:

Terminal window
ANDROID_SERIAL=emulator-5554 skip app launch

skip app launch has no --android-serial flag; the env var is the documented way to target a specific Android device.


Environment Commands

Section titled “Environment Commands”

skip doctor

Section titled “skip doctor”

Check system configuration and prerequisites for Skip development. Validates Xcode, Android Studio, JDK, Gradle, and SDK versions.

Terminal window
# Run basic environment checks
skip doctor
# Include checks for native Swift-on-Android support
skip doctor --native

This is a subset of skip checkup (which also creates and builds a sample project).

skip checkup

Section titled “skip checkup”

Perform a full system evaluation by running all the checks from skip doctor and then creating and building a sample Skip project to verify everything works end to end.

Terminal window
# Full system checkup
skip checkup
# Include native app support checks
skip checkup --native

Tip

Run skip checkup after installing Skip or upgrading your development tools. It will surface configuration issues before they block your actual project builds.

skip upgrade

Section titled “skip upgrade”

Check for and install the latest version of the Skip toolchain.

Terminal window
skip upgrade

skip devices

Section titled “skip devices”

List all connected Android emulators/devices (via adb) and iOS simulators/devices (via simctl and devicectl). Useful for verifying which targets are available before running or testing.

Terminal window
skip devices

Output includes device IDs, platform, type, and model information in JSON format.


Test Commands

Section titled “Test Commands”

skip test

Section titled “skip test”

Build and run Swift (XCTest) and transpiled Kotlin (JUnit) tests, then produce a side-by-side parity report. By default, Kotlin tests run locally via Robolectric. Use --android-serial to run instrumented tests on a connected device or emulator.

Terminal window
# Run parity tests locally (Robolectric)
skip test
# Run tests for a specific project
skip test --project path/to/project
# Run instrumented tests on a connected device
skip test --android-serial auto
# Target a specific emulator
skip test --android-serial emulator-5554

Key flags:

FlagDescription
--project <dir>Project folder (default: .)
--test/--no-testRun tests (default: --test)
--android-serial <serial>Target device for instrumented tests (omit for Robolectric)
--xunit <path>Path to XUnit test report
--junit <path>Path to JUnit test report folder
-c, --configuration <c>Build configuration (default: debug)

Note

When --android-serial is omitted, Kotlin tests run locally on the JVM using Robolectric, which is faster and does not require a running emulator. Pass --android-serial auto to run on a connected device, or provide a specific serial like emulator-5554.


Android Commands

Section titled “Android Commands”

The skip android command group provides tools for cross-compiling Swift packages with the Swift Android SDK, running executables and tests on Android devices or emulators, and managing the SDK, toolchain, and emulator images.

USAGE: skip android <subcommand>
SUBCOMMANDS:
build Build the native project for Android
run Run the executable target on an Android device or emulator
test Test the native project on an Android device or emulator
home Install and manage the Android SDK in ANDROID_HOME
sdk Manage installation of Swift Android SDK
emulator Manage Android emulators
toolchain Manage installation of Swift Android Host Toolchain

skip android build

Section titled “skip android build”

Cross-compile a Swift package for Android using the installed Swift Android SDK.

Terminal window
# Build for Android (debug)
skip android build
# Build for release
skip android build --configuration release
# Build and archive output to a folder
skip android build --dir output/
# Build for a specific architecture
skip android build --arch aarch64

Additional swift build flags can be passed as trailing arguments.

skip android run

Section titled “skip android run”

Build a Swift package for Android, push the executable and shared library dependencies to a connected device or emulator, and run it.

Terminal window
# Run the default executable
skip android run
# Run a specific executable with arguments
skip android run MyExecutable -- --flag value
# Target a specific emulator
skip android run --android-serial emulator-5554

Key flags:

FlagDescription
--android-serial <serial>Target device (default: auto)
--cleanup/--no-cleanupClean up temp files after running (default: --cleanup)
--remote-folder <path>Custom staging folder on device
--env <key=value>Environment variables for remote execution
--copy <path>Additional files to push to the device

skip android test

Section titled “skip android test”

Build Swift tests for Android, push them to a device or emulator, and execute them. By default, tests run as a native executable via adb shell. With --apk, tests are packaged as an Android APK and run via instrumentation.

Terminal window
# Run tests on a connected device
skip android test
# Run tests as an APK (instrumented tests)
skip android test --apk
# Target a specific emulator
skip android test --android-serial emulator-5554
# Run only Swift Testing tests
skip android test --testing-library testing
# Run only XCTest tests
skip android test --testing-library xctest

Key flags:

FlagDescription
--android-serial <serial>Target device (default: auto)
--android-connect-timeout <seconds>Wait for device boot before installing (default: 5)
--apk/--no-apkPackage tests as an APK for instrumented testing
--testing-library <lib>Testing library: all, xctest, or testing (default: all)
--event-stream-output-path <path>Write JSON test event stream to file
--cleanup/--no-cleanupClean up after tests (default: --cleanup)

Tip

Use --apk when your tests need an Android application context (e.g., for accessing Android resources or APIs that require a running Activity). For pure logic tests, the default executable mode is faster.

Toolchain Options

Section titled “Toolchain Options”

The build, run, and test subcommands share these toolchain options for controlling the cross-compilation:

FlagDescription
--swift-version <v>Swift version to use
--sdk <path>Swift Android SDK path
--ndk <path>Android NDK path
--toolchain <path>Swift toolchain path
--package-path <path>Path to the Swift package
-c, --configuration <c>Build configuration: debug or release
--arch <arch>Target architecture: automatic, current, all, aarch64, armv7, x86_64
--android-api-level <level>Android API level (default: 28)
--bridge/--no-bridgeEnable SKIP_BRIDGE bridging to Kotlin (default: --bridge)
-Xswiftc <flag>Pass flag to the Swift compiler
-Xcc <flag>Pass flag to the C compiler
-Xlinker <flag>Pass flag to the linker

skip android sdk

Section titled “skip android sdk”

Manage the Swift cross-compilation SDK for Android. The SDK is required for compiling Swift code to run natively on Android (Skip Fuse mode).

skip android sdk install

Section titled “skip android sdk install”

Install the Swift Android SDK. By default, installs the latest released version.

Terminal window
# Install the latest release
skip android sdk install
# Install a specific version
skip android sdk install --version 6.3
# Install the latest nightly build
skip android sdk install --version nightly-main

skip android sdk list

Section titled “skip android sdk list”

List installed Swift Android SDKs.

Terminal window
# List locally installed SDKs
skip android sdk list
# List available remote SDKs
skip android sdk list --remote

skip android sdk uninstall

Section titled “skip android sdk uninstall”

Remove installed Swift Android SDKs.

Terminal window
# Uninstall all installed SDKs
skip android sdk uninstall
# Uninstall a specific version
skip android sdk uninstall --version swift-6.3-RELEASE_android

skip android emulator

Section titled “skip android emulator”

Create, list, and launch Android emulator images (AVDs). Emulators are used for testing when no physical Android device is connected.

skip android emulator create

Section titled “skip android emulator create”

Install a system image and create an Android Virtual Device (AVD).

Terminal window
# Create the default emulator (API 34)
skip android emulator create
# Create a custom emulator
skip android emulator create \
--name pixel_7_api_36 \
--device-profile pixel_7 \
--android-api-level 36 \
--system-image google_apis_playstore_ps16k

skip android emulator launch

Section titled “skip android emulator launch”

Launch an Android emulator. If only one AVD is installed, it is launched automatically. Otherwise, the default emulator name is used, or you can specify one with --name.

Terminal window
# Launch the default emulator
skip android emulator launch
# Launch a specific emulator
skip android emulator launch --name emulator-34-medium_phone
# Launch in the background (returns after boot completes)
skip android emulator launch --background
# Launch headless (no window, for CI)
skip android emulator launch --headless --background

Key flags:

FlagDescription
-n, --name <name>AVD name to launch
--background/--no-backgroundBackground the process after boot (default: --no-background)
--headless/--no-headlessRun without a window (default: auto-detected from CI env var)
--logcat <filter>Logcat filter expression (default: *:D)
--android-connect-timeout <seconds>Seconds to wait for boot (default: 90)

Tip

On CI, combine --headless --background to launch the emulator, wait for it to fully boot, and then continue with your test script. The command will not return until sys.boot_completed reports 1, so subsequent adb commands are safe to run immediately.

skip android emulator list

Section titled “skip android emulator list”

List installed Android emulator images (AVDs).

Terminal window
skip android emulator list

skip android home install

Section titled “skip android home install”

Set up the base Android SDK in your ANDROID_HOME directory. Installs cmdline-tools, platform-tools, and the emulator component.

Terminal window
skip android home install

This is typically only needed once, or after a fresh system setup. Most users will have Android Studio handle SDK installation.

skip android toolchain version

Section titled “skip android toolchain version”

Show the version of the installed Swift Android Host Toolchain.

Terminal window
skip android toolchain version

Tips and Troubleshooting

Section titled “Tips and Troubleshooting”

Verbose output

Section titled “Verbose output”

Add -v or --verbose to any command to see detailed output, including the exact shell commands being executed. This is invaluable for diagnosing build or configuration issues.

Terminal window
skip android test --verbose

Multiple connected devices

Section titled “Multiple connected devices”

When multiple Android devices or emulators are connected, commands that target a device will automatically prefer emulators over physical devices. To target a specific device, use the --android-serial flag:

Terminal window
# List connected devices to find serial numbers
skip devices
# Target a specific device
skip android test --android-serial emulator-5554

You can also set the ANDROID_SERIAL environment variable, which will be respected by all commands.

CI/CD usage

Section titled “CI/CD usage”

For continuous integration, a typical setup looks like:

Terminal window
# Install Skip and the Android SDK
brew install skip
skip android sdk install
skip android emulator create
# Launch an emulator in the background (headless, waits for boot)
skip android emulator launch --background --headless
# Run tests
skip android test

The emulator launch command waits until the device is fully booted before returning, so the test command can run immediately after.

Getting help

Section titled “Getting help”

Every command supports --help for a full list of available flags:

Terminal window
skip android test --help

For further assistance, visit the Skip forums ↗ or join our Slack.

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.