@@ -9,8 +9,8 @@ emulator](https://github.com/finagolfin/swift-android-sdk/blob/main/.github/work
9
9
10
10
## Cross-compiling and testing Swift packages with the Android SDK bundle
11
11
12
- To build with the Swift 6.1 SDK bundle, first download [ the official open-source
13
- Swift 6.1 toolchain for linux or macOS] ( https://swift.org/install )
12
+ To build with the Swift 6.1.2 SDK bundle, first download [ the official open-source
13
+ Swift 6.1.2 toolchain for linux or macOS] ( https://swift.org/install )
14
14
(make sure to install the Swift dependencies linked there). Install the OSS
15
15
toolchain on macOS as detailed in [ the instructions for using the static linux
16
16
Musl SDK bundle at swift.org] ( https://www.swift.org/documentation/articles/static-linux-getting-started.html ) .
@@ -19,15 +19,15 @@ On linux, simply download the toolchain, unpack it, and add it to your `PATH`.
19
19
Next, install the Android SDK bundle by having the Swift toolchain directly
20
20
download it:
21
21
```
22
- swift sdk install https://github.com/finagolfin/swift-android-sdk/releases/download/6.1/swift-6.1-RELEASE-android-24-0.1.artifactbundle.tar.gz --checksum 971f3b1fd03c059803d625f0a412d7e8c4c6f34440f5216ceaf13e886e8e706f
22
+ swift sdk install https://github.com/finagolfin/swift-android-sdk/releases/download/6.1.2 /swift-6.1.2 -RELEASE-android-24-0.1.artifactbundle.tar.gz --checksum 6d817c947870e8c85e6cab9a6ab6d7313b50fa5a20b890c396723c0b16ab32d9
23
23
```
24
24
or alternately, download the SDK bundle with your favorite downloader and install
25
25
it separately:
26
26
```
27
- > wget https://github.com/finagolfin/swift-android-sdk/releases/download/6.1/swift-6.1-RELEASE-android-24-0.1.artifactbundle.tar.gz
28
- > sha256sum swift-6.1-RELEASE-android-24-0.1.artifactbundle.tar.gz
29
- 971f3b1fd03c059803d625f0a412d7e8c4c6f34440f5216ceaf13e886e8e706f swift-6.1-RELEASE-android-24-0.1.artifactbundle.tar.gz
30
- > swift sdk install swift-6.1-RELEASE-android-24-0.1.artifactbundle.tar.gz
27
+ > wget https://github.com/finagolfin/swift-android-sdk/releases/download/6.1.2 /swift-6.1.2 -RELEASE-android-24-0.1.artifactbundle.tar.gz
28
+ > sha256sum swift-6.1.2 -RELEASE-android-24-0.1.artifactbundle.tar.gz
29
+ 6d817c947870e8c85e6cab9a6ab6d7313b50fa5a20b890c396723c0b16ab32d9 swift-6.1.2 -RELEASE-android-24-0.1.artifactbundle.tar.gz
30
+ > swift sdk install swift-6.1.2 -RELEASE-android-24-0.1.artifactbundle.tar.gz
31
31
```
32
32
You can check if it was properly installed by running ` swift sdk list ` .
33
33
@@ -56,20 +56,20 @@ one depends on the example executables `color`, `generate-manual`, `math`,
56
56
point at test data in the repo: I've had success moving this data with the test
57
57
runner, after modifying the test source so it has the path to this test data in
58
58
the Android test environment. See the example of [ swift-crypto on the
59
- CI] ( https://github.com/finagolfin/swift-android-sdk/blob/6.1/.github/workflows/sdks.yml#L516 ) .
59
+ CI] ( https://github.com/finagolfin/swift-android-sdk/blob/6.1.2 /.github/workflows/sdks.yml#L517 ) .
60
60
61
61
You can copy these executables and the Swift runtime libraries to [ an emulator
62
62
or a USB debugging-enabled device with adb] ( https://github.com/swiftlang/swift/blob/release/6.1/docs/Android.md#3-deploying-the-build-products-to-the-device ) ,
63
63
or put them on an Android device with [ a terminal emulator app like Termux] ( https://termux.dev/en/ ) .
64
64
I test aarch64 with Termux so I'll show how to run the test runner there, but
65
- the process is similar with adb, [ as can be seen on the CI] ( https://github.com/finagolfin/swift-android-sdk/blob/6.1/.github/workflows/sdks.yml#L462 ) .
65
+ the process is similar with adb, [ as can be seen on the CI] ( https://github.com/finagolfin/swift-android-sdk/blob/6.1.2 /.github/workflows/sdks.yml#L465 ) .
66
66
67
- Copy the test executables to the same directory as the Swift 6.1 runtime libraries:
67
+ Copy the test executables to the same directory as the Swift 6.1.2 runtime libraries:
68
68
```
69
69
cp .build/aarch64-unknown-linux-android24/debug/{swift-argument-parserPackageTests.xctest,color,generate-manual,math,repeat,roll} ..
70
- cp ~/.swiftpm/swift-sdks/swift-6.1-RELEASE-android-24-0.1.artifactbundle/swift-6.1-release-android-24-sdk/android-27c-sysroot/usr/lib/aarch64-linux-android/lib*.so ..
70
+ cp ~/.swiftpm/swift-sdks/swift-6.1.2 -RELEASE-android-24-0.1.artifactbundle/swift-6.1.2 -release-android-24-sdk/android-27c-sysroot/usr/lib/aarch64-linux-android/lib*.so ..
71
71
```
72
- You can copy the test executables and Swift 6.1 runtime libraries to Termux using
72
+ You can copy the test executables and Swift 6.1.2 runtime libraries to Termux using
73
73
scp from OpenSSH, run these commands in Termux on the Android device:
74
74
```
75
75
uname -m # check if you're running on the right architecture, should say `aarch64`
@@ -92,6 +92,17 @@ Revert that with `export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermu
92
92
when you're done running armv7 tests and want to go back to the normal aarch64
93
93
mode.
94
94
95
+ Two issues were recently introduced into the Swift toolchain that you may need
96
+ to work around:
97
+
98
+ 1 . If you have the ` ANDROID_NDK_ROOT ` environment variable set, as it is on
99
+ github Actions runners, this SDK bundle won't work, so unset it.
100
+
101
+ 2 . There is a bug when trying to [ cross-compile ` Testing ` tests with the open-source
102
+ macOS toolchain alone] ( https://github.com/swiftlang/swift-package-manager/issues/8362 ) -
103
+ it works fine with the linux toolchain- use the ` -plugin-path ` workaround listed
104
+ there until it is fixed on macOS.
105
+
95
106
## Porting Swift packages to Android
96
107
97
108
The most commonly needed change is to import the new Android overlay, so add
@@ -126,9 +137,9 @@ packagingOptions {
126
137
127
138
## Building an Android SDK from source
128
139
129
- Download the Swift 6.1 compiler as above and Android NDK 27c (only building
140
+ Download the Swift 6.1.2 compiler as above and Android NDK 27c (only building
130
141
the Android SDKs on linux works for now). Check out this repo and run
131
- ` SWIFT_TAG=swift-6.1-RELEASE ANDROID_ARCH=aarch64 swift get-packages-and-swift-source.swift `
142
+ ` SWIFT_TAG=swift-6.1.2 -RELEASE ANDROID_ARCH=aarch64 swift get-packages-and-swift-source.swift `
132
143
to get some prebuilt Android libraries and the Swift source to build an AArch64
133
144
SDK. If you pass in a different tag like ` swift-DEVELOPMENT-SNAPSHOT-2025-04-03-a `
134
145
for the latest Swift trunk snapshot and pass in the path to the corresponding
@@ -150,8 +161,8 @@ substituted instead:
150
161
```
151
162
./swift/utils/build-script -RA --skip-build-cmark --build-llvm=0 --android
152
163
--android-ndk /home/finagolfin/android-ndk-r27c/ --android-arch aarch64 --android-api-level 24
153
- --build-swift-tools=0 --native-swift-tools-path=/home/finagolfin/swift-6.1-RELEASE-ubuntu22.04/usr/bin/
154
- --native-clang-tools-path=/home/finagolfin/swift-6.1-RELEASE-ubuntu22.04/usr/bin/
164
+ --build-swift-tools=0 --native-swift-tools-path=/home/finagolfin/swift-6.1.2 -RELEASE-ubuntu22.04/usr/bin/
165
+ --native-clang-tools-path=/home/finagolfin/swift-6.1.2 -RELEASE-ubuntu22.04/usr/bin/
155
166
--host-cc=/usr/bin/clang-13 --host-cxx=/usr/bin/clang++-13
156
167
--cross-compile-hosts=android-aarch64 --cross-compile-deps-path=/home/finagolfin/swift-release-android-aarch64-24-sdk
157
168
--skip-local-build --xctest --swift-install-components='clang-resource-dir-symlink;license;stdlib;sdk-overlay'
@@ -214,7 +225,7 @@ packages, by compiling against a more recent Android API that doesn't need the
214
225
` libandroid-spawn ` backport, and by cross-compiling libcurl/libxml2 and their
215
226
dependencies yourself or not using FoundationNetworking and FoundationXML.
216
227
217
- Finally, it gets [ the 6.1 source] ( https://github.com/swiftlang/swift/releases/tag/swift-6.1-RELEASE )
228
+ Finally, it gets [ the 6.1.2 source] ( https://github.com/swiftlang/swift/releases/tag/swift-6.1.2 -RELEASE )
218
229
tarballs for eleven Swift repos and renames them to ` llvm-project/ ` , ` swift/ ` ,
219
230
` swift-syntax ` , ` swift-experimental-string-processing ` , ` swift-corelibs-libdispatch ` ,
220
231
` swift-corelibs-foundation ` , ` swift-collections ` , ` swift-foundation ` ,
0 commit comments