Skip to content

Run build using official Swift SDK for Android swift-DEVELOPMENT-SNAP… #79

Run build using official Swift SDK for Android swift-DEVELOPMENT-SNAP…

Run build using official Swift SDK for Android swift-DEVELOPMENT-SNAP… #79

Workflow file for this run

name: sdk-install-demo ci
on:
push:
branches: [ main ]
workflow_dispatch:
pull_request:
jobs:
install-sdk:
strategy:
matrix:
include:
#- name: 'macOS 26'
# os: 'macos-26'
# ANDROID_API: 28
# EMULATOR_ARCH: 'arm64-v8a'
# EMULATOR_GPU: 'swiftshader_indirect'
#- name: 'macOS 15'
# os: 'macos-15'
# ANDROID_API: 28
# EMULATOR_ARCH: 'arm64-v8a'
# EMULATOR_GPU: 'swiftshader_indirect'
#- name: 'macOS 14'
# os: 'macos-14'
# ANDROID_API: 28
# EMULATOR_ARCH: 'arm64-v8a'
# EMULATOR_GPU: 'swiftshader_indirect'
- name: 'macOS 15 Intel API 28'
os: 'macos-15-intel'
ANDROID_API: 28
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'macOS 13 API 28'
os: 'macos-13'
ANDROID_API: 28
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 28'
os: 'ubuntu-latest'
ANDROID_API: 28
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 29'
os: 'ubuntu-latest'
ANDROID_API: 29
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 30'
os: 'ubuntu-latest'
ANDROID_API: 30
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 31'
os: 'ubuntu-latest'
ANDROID_API: 31
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 32'
os: 'ubuntu-latest'
ANDROID_API: 32
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 33'
os: 'ubuntu-latest'
ANDROID_API: 33
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 34'
os: 'ubuntu-latest'
ANDROID_API: 34
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
- name: 'Ubuntu Latest API 35'
os: 'ubuntu-latest'
ANDROID_API: 35
EMULATOR_ARCH: 'x86_64'
EMULATOR_GPU: 'swiftshader_indirect'
fail-fast: false
runs-on: ${{ matrix.os }}
env:
ANDROID_API: ${{ matrix.ANDROID_API }}
EMULATOR_ARCH: ${{ matrix.EMULATOR_ARCH }}
EMULATOR_GPU: ${{ matrix.EMULATOR_GPU }}
EMULATOR_ENGINE: ${{ matrix.EMULATOR_ENGINE }}
ANDROID_TARGET: 'default'
#ANDROID_BUILD_TOOLS_VERSION: 36.0.0
ANDROID_BUILD_TOOLS_VERSION: 'latest'
ANDROID_EMULATOR_NAME: 'demo'
ANDROID_PROFILE: "Nexus 10"
ANDROID_CHANNEL: "3"
BUILD_TOOLS_VERSION: "35.0.0"
steps:
- name: Free Disk Space
if: runner.os == 'Linux'
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Enable KVM
if: runner.os == 'Linux'
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r27d
- name: "Install Swift Host Toolchain"
run: |
swiftly install main-snapshot-2025-10-16
- name: "Install Swift SDK for Android"
run: |
swift sdk install https://download.swift.org/development/android-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a_android-0.1.artifactbundle.tar.gz --checksum 451844c232cf1fa02c52431084ed3dc27a42d103635c6fa71bae8d66adba2500
- name: "Setup Swift SDK for Android"
run: |
cd ~/Library/org.swift.swiftpm || cd ~/.swiftpm
./swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a-android-0.1.artifactbundle/swift-android/scripts/setup-android-sdk.sh
- name: "Build Swift Executable for Android"
run: |
mkdir AndroidExeDemo
cd AndroidExeDemo
swift package init --type executable
swiftly run swift build --swift-sdk x86_64-unknown-linux-android${ANDROID_API} --static-swift-stdlib
- name: "Setup Environment"
run: |
echo "$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/${{ env.ANDROID_BUILD_TOOLS_VERSION }}" >> $GITHUB_PATH
echo "ANDROID_NDK_HOME=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV
# needed for Linux or else the emulator will be created in
# ~/.android/avd but it will be sought in ~/.config/.android/avd
if [[ "${RUNNER_OS}" == "Linux" ]]; then
echo "ANDROID_AVD_HOME=${XDG_CONFIG_HOME}/.android/avd" >> $GITHUB_ENV
fi
- name: SDKs - accept licenses
run: yes y | sdkmanager --licenses
- name: SKDs - setup build tools
run: sdkmanager --install "build-tools;${BUILD_TOOLS_VERSION}" platform-tools "platforms;android-${ANDROID_API}" --channel="${ANDROID_CHANNEL}"
- name: SKDs - setup emulator
run: sdkmanager --install emulator --channel="${ANDROID_CHANNEL}"
- name: SKDs - download required images
run: sdkmanager --install "system-images;android-${ANDROID_API};${ANDROID_TARGET};${EMULATOR_ARCH}" --channel="${ANDROID_CHANNEL}"
- name: Emulator - Create
run: avdmanager --verbose create avd --force -n "${ANDROID_EMULATOR_NAME}" --device "${ANDROID_PROFILE}" --abi "${ANDROID_TARGET}/${EMULATOR_ARCH}" --package "system-images;android-${ANDROID_API};${ANDROID_TARGET};${EMULATOR_ARCH}" --sdcard 512M
#- name: Emulator - Find AVDs
# run: find ~/ -type d -name '*.avd'
#- name: Emulator - List AVDs
# run: emulator -list-avds
- name: Emulator - Boot
run: nohup emulator -memory 4096 -avd "${ANDROID_EMULATOR_NAME}" -wipe-data -no-window -accel off -no-accel -gpu "${EMULATOR_GPU}" -no-snapshot -noaudio -no-boot-anim &
- name: ADB Wait For Device
run: adb wait-for-any-device
timeout-minutes: 5
- name: Wait briefly
run: sleep 30
#- name: ADB Press Power Button
# run: adb shell input keyevent 82
- name: "Check Emulator"
run: |
adb shell 'echo Hello Android!'