Guides

Android Guide

Our guide for all Android specfic topics for Swift for Android application development.

Gradle Plugins Guide

The plugin provides tasks to build Swift packages, generate Java bridgings, and assemble final Android products.

Use of latest version

Make sure to use the latest version. Some screenshots or examples may be outdated and not updated every time. The latest version of the Gradle and Swift4j plugins can be found here:

NOTE: you can also consider to always use the latest version by using latest.release instead of a version in the plugins configuration section. For more details see an example in the Applying plugin section.

Getting Started

Dependencies

Xcode version should be chosen such that the version of the Swift Toolchain included within Xcode matches the version of the Swift for Androind Toolchain. All releases of the Swift for Android Toolchain can be found at Swift for Android

To check the Swift version you can run swiftc -version. To choose between Xcode versions you can use xcode-select.

Depending on the installed Swift versions, the plugin will download automatically the most suitable version of the Swift for Android Toolchain.

Usage

Applying plugin

To apply the plugin, add the plugin's id into the plugins block in the build file build.gradle.kts that resides in the app directory of the project:

plugins {
    id("io.scade.gradle.plugins.android.swiftpm") version "latest.release"
}
Plugins configuration

Add the following configuration section to the build file build.gradle.kts:

swiftpm { 
    // Full Path to the folder containing Package.swift
    path = file("<PACKAGE LOCATION>")
    // Name of the package's product 
    product = "<PRODUCT NAME>"
    
    // OPTIONAL PROPERTIES
    
    // Java version (8, 9, 11, ...) used for the generated code compatibility
    // Example: set compatibility with Java 8
    javaVersion = 8 // (default: Java 11)
    
    // Platform configuration including custom toolchain path
    // Example: a custom path to the Android toolchain    
    platforms = listOf(
        TargetPlatform.Android(
            // List of build architectures
            archs = listOf("<armeabi-v7a | arm64-v8a | x86 | x86_64>"),
            // Path to a custom toolchain location
            toolchain = file("<PATH TO THE TOOLCHAIN LOCATION>"))
    )
    
    // Configuration for the Scade Build Tool (scd)
    
    // Custom binary location     
    scd = file("<SCD BINARY LOCATION>")
    // Auto-update for the scd build tool
    scdAutoUpdate = true
    // List of custom options passed to the scd build tool
    scdOptions = listOf("<OPTIONS>")
}
EntryMandatoryDescriptionDefault
pathYesFull path to your Swift Project source code
productYesName of the Swift product
javaVersionNoSet Java Compatibiity Level11
scdNoCustom Location of the scd build tool
scdAutoUpdateNoTriggers an autoupdate of the scd build tooltrue
scdOptionsNoCustom options to be forwarded to the scd build tool

Note: plugin supports only dynamic library products

Real Life Example

build.gradle.kts

Development

Local Installation

Install the local Maven repository by executing

./gradlew publishAllToMavenLocal 

In order to use locally installed plugins in your applications, add the local Maven repository to the plugin management section in the Gradle settings file settings.gradle.kts:

pluginManagement {
    repositories {
        mavenLocal()
        gradlePluginPortal() 
    }
}
Android Guide | Scade.io