I've had requests for an Android workflow, both using my unofficial SDK, finagolfin/swift-android-sdk#127, and for whenever an official Android SDK is available. Rather than waiting for an official Android SDK first, I thought I could put together an Android workflow here that builds the Android SDK from source on first use, then uses it to cross-compile that Swift package that invoked this workflow on its CI and run its tests in the Android emulator, before finally caching the freshly-built Android SDK on that Swift package's CI for subsequent test runs.
Here are some further details:
- I'd start off with Swift 6.1 only, building from the latest snapshot tag, then add other release branches later.
- linux-only for build host initially, add macOS later
- I currently download some pre-compiled libraries for Android from another OSS project for my SDK bundle supporting Android API 24: a backported
posix_spawn() wrapper to Android API 24 and libcurl/libxml2 for Foundation. I'd simply require Android API 28, when posix_spawn() was added to Android, and remove FoundationNetworking and FoundationXML support for this workflow, looking into ways to add those back later, so no such external libraries would be required for this workflow.
- I'd simply use an existing external Android emulator workflow, as I do on my Android CI. We could look into removing that external dependency later, if wanted.
- Once an official Android SDK is available, we could make that the default, and make this fresh build an alternate option for those who want it.
@FranzBusch or @shahmishal, let me know if you'd be okay with adding such an Android workflow here, will put together a pull if so.
I've had requests for an Android workflow, both using my unofficial SDK, finagolfin/swift-android-sdk#127, and for whenever an official Android SDK is available. Rather than waiting for an official Android SDK first, I thought I could put together an Android workflow here that builds the Android SDK from source on first use, then uses it to cross-compile that Swift package that invoked this workflow on its CI and run its tests in the Android emulator, before finally caching the freshly-built Android SDK on that Swift package's CI for subsequent test runs.
Here are some further details:
posix_spawn()wrapper to Android API 24 and libcurl/libxml2 for Foundation. I'd simply require Android API 28, whenposix_spawn()was added to Android, and removeFoundationNetworkingandFoundationXMLsupport for this workflow, looking into ways to add those back later, so no such external libraries would be required for this workflow.@FranzBusch or @shahmishal, let me know if you'd be okay with adding such an Android workflow here, will put together a pull if so.