This plugin integrates Swift Android Toolchain to Gradle
This plugin requires Android NDK and the Swift Android Toolchain. Follow the installation guide to set them up.
The plugin looks up the NDK and toolchain using the environment variables ANDROID_NDK_HOME
and SWIFT_ANDROID_HOME
, or by reading local.properties
in the project root:
ndk.dir=/path/to/ndk
swift-android.dir=/path/to/toolchain
Plugin build swift code using SwiftPM so you should define you code inside SwiftPM modules. Root module should be located inside app/src/main/swift
. See sample.
- Add the following to your root build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.readdle.android.swift:gradle:6.0.3'
}
}
- Add the following to your project build.gradle
apply plugin: 'com.readdle.android.swift'
- Configure build types and arhitecture
buildTypes {
release {
debuggable false
// Build Swift in release mode
jniDebuggable false
// all 4 arhitectures
}
debug {
debuggable true
// Build Swift in debug mode
jniDebuggable true
// only 2 arhitectures
ndk {
abiFilters = ["arm64-v8a", "x86_64"]
}
}
}
- Optionally you can add some extra configuration to your project build.gradle. For example:
swift {
// Enables swift clean when ./gradlew clean invoked. Default true
cleanEnabled false
// Custom swift flags for debug build
debug {
// Set custom preprocessor flags
extraBuildFlags "-Xswiftc", "-DDEBUG"
}
// Custom swift flags for release build
release {
// enable symbols in relase mode
extraBuildFlags "-Xswiftc", "-g"
}
}
In simple cases you can just run ./gradlew assembleDebug
and everything will work.
Gradle | SwiftPM |
---|---|
./gradlew swiftClean |
swift package clean |
./gradlew swiftBuildDebug |
swift build |
./gradlew swiftBuildRelease |
swift build --configuration release |
./gradlew swiftPackageUpdate |
swift package update |
See sample app.