Skip to content

Commit cedc193

Browse files
committed
Initial AndroidBackend implementation (experimental)
1 parent fa08f68 commit cedc193

File tree

8 files changed

+473
-3
lines changed

8 files changed

+473
-3
lines changed

Examples/Package.resolved

Lines changed: 18 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Examples/build_android.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
app=$1
3+
ndk=/Users/stackotter/Library/Android/sdk/ndk/26.1.10909125
4+
build_api=24
5+
link_api=32
6+
target_arch=aarch64
7+
host=darwin-x86_64 # x86_64 even on apply silicon
8+
xcrun --toolchain swift swift build --swift-sdk ${target_arch}-unknown-linux-android${build_api} --product $app \
9+
-Xswiftc -I${ndk}/toolchains/llvm/prebuilt/${host}/sysroot/usr/include/android \
10+
-Xcc -fPIC
11+
12+
/Library/Developer/Toolchains/swift-6.1.1-RELEASE.xctoolchain/usr/bin/swiftc -L /Users/stackotter/Desktop/Projects/SwiftCrossUI/SwiftCrossUI/Examples/.build/aarch64-unknown-linux-android24/debug -o /Users/stackotter/Desktop/Projects/SwiftCrossUI/SwiftCrossUI/Examples/.build/aarch64-unknown-linux-android24/debug/libCounterExample.so -emit-library -module-name CounterExample -Xlinker --defsym -Xlinker main=CounterExample_main -resource-dir /Users/stackotter/Library/org.swift.swiftpm/swift-sdks/swift-6.1-RELEASE-android-24-0.1.artifactbundle/swift-6.1-release-android-24-sdk/android-27c-sysroot/usr/lib/swift -Xclang-linker -resource-dir -Xclang-linker /Users/stackotter/Library/org.swift.swiftpm/swift-sdks/swift-6.1-RELEASE-android-24-0.1.artifactbundle/swift-6.1-release-android-24-sdk/android-27c-sysroot/usr/lib/swift/clang -Xlinker '-rpath=$ORIGIN' @/Users/stackotter/Desktop/Projects/SwiftCrossUI/SwiftCrossUI/Examples/.build/aarch64-unknown-linux-android24/debug/CounterExample.product/Objects.LinkFileList -target aarch64-unknown-linux-android24 -sdk /Users/stackotter/Library/org.swift.swiftpm/swift-sdks/swift-6.1-RELEASE-android-24-0.1.artifactbundle/swift-6.1-release-android-24-sdk/android-27c-sysroot -Xclang-linker -fuse-ld=lld -sdk /Users/stackotter/Library/org.swift.swiftpm/swift-sdks/swift-6.1-RELEASE-android-24-0.1.artifactbundle/swift-6.1-release-android-24-sdk/android-27c-sysroot -g -I/Users/stackotter/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/android

Package.resolved

Lines changed: 35 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ let package = Package(
7070
.library(name: "WinUIBackend", type: libraryType, targets: ["WinUIBackend"]),
7171
.library(name: "DefaultBackend", type: libraryType, targets: ["DefaultBackend"]),
7272
.library(name: "UIKitBackend", type: libraryType, targets: ["UIKitBackend"]),
73+
.library(name: "AndroidBackend", type: libraryType, targets: ["AndroidBackend"]),
7374
.library(name: "Gtk", type: libraryType, targets: ["Gtk"]),
7475
.library(name: "Gtk3", type: libraryType, targets: ["Gtk3"]),
7576
.executable(name: "GtkExample", targets: ["GtkExample"]),
@@ -110,6 +111,10 @@ let package = Package(
110111
url: "https://github.com/stackotter/swift-winui",
111112
revision: "1695ee3ea2b7a249f6504c7f1759e7ec7a38eb86"
112113
),
114+
.package(
115+
url: "https://github.com/stackotter/Android",
116+
revision: "9e86388d4147637d2d1cb41bed0d99a1d915952a"
117+
),
113118
// .package(
114119
// url: "https://github.com/stackotter/TermKit",
115120
// revision: "163afa64f1257a0c026cc83ed8bc47a5f8fc9704"
@@ -164,6 +169,10 @@ let package = Package(
164169
name: "UIKitBackend",
165170
condition: .when(platforms: [.iOS, .tvOS, .macCatalyst, .visionOS])
166171
),
172+
.target(
173+
name: "AndroidBackend",
174+
condition: .when(platforms: [.android])
175+
),
167176
]
168177
),
169178
.target(name: "AppKitBackend", dependencies: ["SwiftCrossUI"]),
@@ -252,6 +261,15 @@ let package = Package(
252261
name: "WinUIInterop",
253262
dependencies: []
254263
),
264+
.target(
265+
name: "AndroidBackend",
266+
dependencies: [
267+
"SwiftCrossUI",
268+
"AndroidBackendShim",
269+
.product(name: "AndroidKit", package: "Android"),
270+
]
271+
),
272+
.target(name: "AndroidBackendShim"),
255273
// .target(
256274
// name: "CursesBackend",
257275
// dependencies: ["SwiftCrossUI", "TermKit"]

0 commit comments

Comments
 (0)