From 22ffc29a95bb1bec69256ed0b845f3fc1aad02b5 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 14 Oct 2025 12:24:09 +1000 Subject: [PATCH 1/2] feat(tutorials): add a tutorial on using ios sdk and llvm to package ios applications on windows --- .../images/airsdkmanager-configuration.png | Bin 0 -> 13165 bytes .../ios/images/airsdkmanager-iossdk-path.png | Bin 0 -> 26342 bytes .../platform/ios/windows-packaging.mdx | 154 ++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100755 docs/tutorials/platform/ios/images/airsdkmanager-configuration.png create mode 100755 docs/tutorials/platform/ios/images/airsdkmanager-iossdk-path.png create mode 100644 docs/tutorials/platform/ios/windows-packaging.mdx diff --git a/docs/tutorials/platform/ios/images/airsdkmanager-configuration.png b/docs/tutorials/platform/ios/images/airsdkmanager-configuration.png new file mode 100755 index 0000000000000000000000000000000000000000..ab2becf8bc7fc53ca8628363ede9f8bcb8c7303f GIT binary patch literal 13165 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

ZN4A;hjd{f$=r@^<3n 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials/platform/ios/windows-packaging.mdx b/docs/tutorials/platform/ios/windows-packaging.mdx new file mode 100644 index 000000000..d7d42fd12 --- /dev/null +++ b/docs/tutorials/platform/ios/windows-packaging.mdx @@ -0,0 +1,154 @@ +--- +title: Packaging on Windows +--- + +Packaging iOS applications on Windows is not supported by Apple, however the AIR SDK has been able to get around this for a long time by creating stubs of the iOS SDK and using a specially packaged version of the open source Apple linker. + +More recently however this has become more difficult as Apple have made changes to their toolchain and the AIR SDK can no longer successfully package all iOS applications on Windows. This becomes more apparent when trying to package applications that use more recent iOS SDK features, frameworks or capabilities, and particularly when swift code is involved. + +You may run into issues like: + +- Errors about missing symbols when packaging / linking (particularly related to swift) +- Errors about framework signatures +- Installation verification errors when installing on device + +The simplest solution to these issues is to package your iOS applications on a Mac. However if you need to package on Windows then please see the following suggestions that may help you resolve some of these issues. + + +## Providing an iOS SDK + +The AIR SDK includes stubs of the iOS SDK to allow it to compile and link iOS applications. This may or may not include all the symbols and frameworks that your application needs. + +However you can use a full version of the iOS SDK from a Mac to provide the missing symbols and frameworks. + + +### Obtaining the iOS SDK + +You can copy the iOS SDK from a Mac that has Xcode installed. The SDKs are located in the following folder: + +``` +/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs +``` + +You will see one or more folders named like `iPhoneOSXX.X.sdk` where `XX.X` is the version number of the SDK (e.g. `iPhoneOS18.4.sdk`). + +:::note +Avoid using the generic `iPhoneOS.sdk` name as this is a symbolic link to the latest version +::: + +You need to copy the entire `iPhoneOSXX.X.sdk` folder to your Windows machine. Due to the symbolic links in the SDK it is best to use a tool that can handle these correctly, such as `rsync` or `zip`. For example, you can use `zip` on the command line as below: + +``` +zip -r iPhoneOS18.4.sdk.zip /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.4.sdk +``` + +:::note +Make sure you use the actual version number of the SDK you are copying. +::: + +Copy this zip file to your Windows machine and extract it to a folder where you want to keep the iOS SDK (e.g. `C:\Users\yourname\work\sdks\ios\iPhoneOS18.4.sdk`). + + + +### Configuring the AIR SDK + +#### AIR SDK Manager + +The easiest way to configure the AIR SDK to use the iOS SDK is to use the AIR SDK Manager application. + +1. Open the AIR SDK Manager application +2. Select the "Configuration" tab + +![](images/airsdkmanager-configuration.png) + +3. In the "iOS" section, find the "iOS Platform SDK" and either enter or browse for the path to the `iPhoneOSXX.X.sdk` folder that you extracted + +![](images/airsdkmanager-iossdk-path.png) + +4. Click "Apply" to save the configuration + +Any iOS applications that you package using the AIR SDK will now use the provided iOS SDK. + + +#### Configuration File + +You can also configure the iOS SDK by editing the `adt.cfg` file located in the `~/.airsdk` folder of your user directory. + +:::note +This file is where the AIR SDK Manager saves its configuration, so if you have already configured the iOS SDK using the AIR SDK Manager then you should see the path already set in this file. +::: + +Add or edit the following line to point to the path of the `iPhoneOSXX.X.sdk` folder that you copied from the Mac: + + +``` +... + +iOSPlatformSDK=C:/Users/yourname/work/sdks/ios/iPhoneOS18.4.sdk + +... +``` + +This will configure the AIR SDK to use the provided iOS SDK for all iOS applications that you package. + + +#### Command line + +You can also configure a specific build command to use the iOS SDK by adding the `-platformsdk` option to your `adt` command. + +``` +adt -package -target + ... + -platformsdk "C:/Users/yourname/work/sdks/ios/iPhoneOS18.4.sdk" + ... +``` + +This will configure the AIR SDK to use the provided iOS SDK for this specific packaging command only. + + +## Installing the LLVM toolchain + +:::info +A lot of issues are solved by simply providing a full iOS SDK, however some issues may still remain due to limitations in the version of the Apple linker included in the AIR SDK. +If after providing the iOS SDK you still have issues linking (for example, missing symbols when building) then you can try installing a more recent version of the LLVM toolchain for Windows. + +This is not guaranteed to solve all issues, but it may help in some cases. +::: + +The AIR SDK uses a custom version of the Apple linker to create iOS applications on Windows. +This is included in the AIR SDK but it is based on an older version of the Apple toolchain and may not work with all applications. + + +### Installation + +You can try installing a more recent version of the LLVM toolchain for Windows from here: + +https://github.com/llvm/llvm-project + +Download the installer executable appropriate for your system (e.g. `LLVM-15.0.7-win64.exe`) and run it to install the toolchain. + +If you leave the default options selected it will install to `C:\Program Files\LLVM` and the AIR SDK will automatically find it. + +However if you install it to a different location you will need to set the `LLVM_HOME` configuration in your `adt.cfg` file to point to the folder of the LLVM installation. +For example: + +``` +AndroidPlatformSDK=C:/Users/yourname/work/sdks/android +iOSPlatformSDK=C:/Users/yourname/work/sdks/ios/iPhoneOS18.4.sdk +LLVM_HOME=C:/Program Files/LLVM +``` + +### Usage + +You can confirm that the AIR SDK is using the LLVM toolchain by looking at the `adt.log` output when packaging an iOS application. +You should see something like this: + +``` +ld64 command line: C:/Program Files/LLVM/bin/ld64.lld.exe -pie -ObjC ... +``` + +whereas if it is using the built-in linker you will see something like this (using `ld64.exe` from within the AIR SDK): + +``` +ld64 command line: C:\AIRSDK_51.2.2\lib\aot/bin/ld64/ld64.exe -pie -ObjC ... +``` \ No newline at end of file From a3d5e2d81b4ae3d4090a2beb0d11df5c03df0adc Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 14 Oct 2025 12:31:38 +1000 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/tutorials/platform/ios/windows-packaging.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/platform/ios/windows-packaging.mdx b/docs/tutorials/platform/ios/windows-packaging.mdx index d7d42fd12..1823fcf07 100644 --- a/docs/tutorials/platform/ios/windows-packaging.mdx +++ b/docs/tutorials/platform/ios/windows-packaging.mdx @@ -2,9 +2,9 @@ title: Packaging on Windows --- -Packaging iOS applications on Windows is not supported by Apple, however the AIR SDK has been able to get around this for a long time by creating stubs of the iOS SDK and using a specially packaged version of the open source Apple linker. +Packaging iOS applications on Windows is not supported by Apple, however, the AIR SDK has been able to get around this for a long time by creating stubs of the iOS SDK and using a specially packaged version of the open source Apple linker. -More recently however this has become more difficult as Apple have made changes to their toolchain and the AIR SDK can no longer successfully package all iOS applications on Windows. This becomes more apparent when trying to package applications that use more recent iOS SDK features, frameworks or capabilities, and particularly when swift code is involved. +More recently, however, this has become more difficult as Apple have made changes to their toolchain and the AIR SDK can no longer successfully package all iOS applications on Windows. This becomes more apparent when trying to package applications that use more recent iOS SDK features, frameworks or capabilities, and particularly when swift code is involved. You may run into issues like: