2024-04-19 Version 3.64 - Upgraded LLVM/Clang compiler (Apple branch) to release tag "clang-16.0.0/swift-5.10-RELEASE". - Upgraded the Apple linker to ld64-951.9 with patches. - Added support for statically-linked Xcode framework bundles (.xcframework) -- such as the ones used in the new Google Maps SDK. - Fixed an elusive crash bug in the Apple ld64 linker which was caused by an improperly done platform-specific workaround. - The Keychain UI can now create private keys and issue certificate signing requests using the EC (elliptic curves) algorithm (e.g. to obtain Apple Pay certificates). - CocoaPods daemon: fixed unexpected autoshutdown issue that was happening with Pod operations taking more than 5 minutes to complete. - CocoaPods daemon: replaced the xargs utility with a better POSIX-compliant one (fixes BoringSSL pods installation). 2024-03-01 Version 3.63 - The builder UI now proposes to automatically load a builder settings file if it's stored in the Xcode project root. - The default save path of a builder settings file is now the Xcode project root. Feedback welcome on whether it's a time-saving idea or not. - Improved the robustness of the master build script when evaluating the compiler flags for deciding whether creating a dSYM bundle is necessary. 2024-02-29 Version 3.62 - Fixed an issue where a just built framework's headers (private and public) wouldn't be embedded in the output framework directory in the absence of a Swift module file. - The build script now creates a local copy of the Win64 Unity IL2CPP build tools in the Xcode project directory (adding around 75 Mb) to make these projects portable and no longer depend on an existing Unity installation. - For command-line power users who use the full iOS Build Environment to build Mac apps: added an 'icnstool' utility to create and extract macOS icon pack (.icns) files. - For the same people: fixed quite some trailing issues in the 'makedmg' DMG file creation utility by refactoring a lot of the HFS+ code. 2024-02-19 Version 3.61.1 - Reverted the (overly optimistic) upgrade from 2048 to 4096-bit in newly created private keys: the iOS Provisioning Portal website only accepts 2048-bit RSA CSRs (aren't we in 2024, Apple!?) - For command-line power users only: the migration scripts are now able to migrate macOS, watchOS, tvOS and visionOS SDKs as well just by toggling a variable in the step 1 script. 2024-02-09 Version 3.61 - Upgraded the Apple binary utilities to cctools-1009.2 with patches (visionOS, firmware and sepOS support - feedback welcome). - Upgraded the Apple linker to ld64-907 with patches (ObjC msgSend stub prototypes, visionOS, firmware and sepOS support - feedback welcome). - Upgraded crypto library used in code signing to LibreSSL-3.8.2 + PKCS#11 CryptoKI bindings to be on the safe side when the CA/B requirements for code signing security apply to the Apple store (see https://cabforum.org/uploads/Baseline-Requirements-for-the-Issuance-and-Management-of-Code-Signing.v2.8.pdf). - The latter change adds support for storing the private key used in code signing to be stored on a hardware security module (HSM) or a USB security token. - Fixed a problem causing apps using il2cpp created by recent Unity versions to be rejected by Apple because of erroneous inclusion of Swift arm64 libraries for the wrong platform. - The upload tool now creates an "upload.log" file in the same directory as the .ipa file that's being uploaded to App Store Connect to help with upload problems. - Fixed an issue with the CocoaPods daemon refusing to start on some versions of Windows 10 an 11 due to a change in the "chcp" tool output by Microsoft. - Fixed an issue in the POSIX compatibility layer causing failures in various tools when trying to map large input files (larger than 2^31 bytes). - Added the ability to set build numbers in more format than X.Y.Z in the UI: 'X' and 'X.Y' are also supported and will no longer append trailing '.0' and '.0.0's. - Better guess at when to use the compiler-supplied Swift shims header files instead of the SDK-supplied ones (if any) at SDK migration time. - Removed third-party curl utility, scripted downloads are now made by powershell's integrated WebClient. - Added the ability for ccache to store its temporary directory on a network share (though not recommended for performance reasons). - New private keys for code signature are now 4096-bit by default. 2023-11-08 Version 3.60.2 - Fixed a regression in 3.60.1 affecting Xcode projects using Unity-generated il2cpp code that could no longer be built. My apologies. - Fixed the inactivity watchdog of the new CocoaPods daemon. - Fixed truncated build log problem by rewriting the tee utility. 2023-11-06 Version 3.60.1 - Updated CocoaPods daemon to CocoaPods 1.14.2 over Ruby 3.2 in a new VM (watch out, 3 Gb RAM minimum is necessary now). - Added a "sw_vers" utility to the CocoaPods daemon for the Pods that require one. - Fixed missing symbolic links in the iOS SDK during migration. - Blocked (in the UI) the ability to build 32-bit (armv7) variants of a project when either the installed SDK or the project itself don't support it. 2023-11-04 Version 3.60 - This is an intermediary release: I haven't had enough time to finish all the improvements I planned for this version. - Upgraded LLVM/Clang compiler (Apple branch) to release tag "clang-16.0.0/swift-5.9.1-RELEASE". - Fixed an issue with the detection of the Unity IL2CPP compiler when looking at the default Unity install path. - Fixed an Apple QA problem with the iOS 17 SDK where libxml would have two colliding modulemap files, preventing regeneration of compiler modules. - Fixed a false positive in the dependency checker tool for framework binaries referenced by their canonical path (.framework/Versions/A/name -> .framework/name). - Fixed an error in the realpath() implementation of the symlink emulation code that could cause a bad file path resolution. - Fixed an error in the I/O code where files larger than 1 Gb could not be written in one pass (where is it documented that 0x40000000 is the largest writtable block size on Win32??) - Worked around a problem where the Unity il2cpp compiler driver couldn't find GameAssembly source files accessed by relative paths. - POSTPONED TO 3.60.1: Updated CocoaPods daemon to CocoaPods 1.14.2 - POSTPONED TO 3.60.1: Added a "sw_vers" utility to the CocoaPods daemon for the Pods that require one. 2023-07-31 Version 3.59 - Upgraded LLVM/Clang compiler (Apple branch) to release tag "clang-15.0.0/swift-5.8.1-RELEASE". - Fixed an issue in the .ipa file creation tool (makeipa.exe) where empty directories wouldn't be represented in the archive. - Fixed an issue that prevented the remote debug console from being compiled properly with some SDKs. - All executables are now signed to avoid false positives with virus scanners that flag unsigned executables as dangerous. 2023-06-30 Version 3.58 - Fixed a potential crash in scp.exe (used by CocoaPods) by moving some allocations to the heap. - Updated CocoaPods daemon to CocoaPods 1.12.1. - Proper integration of Swift API notes within the platform-specific SDK (please migrate your iOS SDK again). - pbxprojparse -sources now outputs Swift files first so that mixed sources modules can be built correctly (in a near future). - The code signer now destroys the "com.apple.security.app-sandbox" entitlement if it's not signing a macOS app (as Xcode does). - Increased tolerance in the LLVM linker for duplicated symbols when both source locations are within archives to mimic the Apple linker behaviour. 2023-05-26 Version 3.57 - Added a dedicated dialog box to easily edit extra compiler and linker flags. - Looks like you're interested in reading the changelog. Please read this one til the end. - LLVM modules cache path moved from Toolchain to SDK directory (because these modules are specific to a certain SDK). - Compiler cache (ccache) path moved to SDK directory (same rationale). - LLVM modules are now enabled by default. - Added the missing iOS glue to the Dispatch Swift framework to be able to build Swift code for iOS that uses threads. - The Swift compiler is invoked in -frontend mode (as Xcode does) and not in driver mode (as Apple recommends). - Added a -visibility flag to pbxprojparse to use with -headers so as to specify the desired visibility. - Proper handling of header visibilities (private/public/project) when constructing LLVM modules. - Improved waitfor utility for correctly watching over multiple instances of multiple compiler types in driver and frontend modes in multithreaded mode. - One last thing. The toolchain is now able to build Swift code. Please report any issues to the support forum. 2023-05-15 Version 3.56 - Upgraded LLVM/Clang compiler (Apple branch) to release tag "clang-15.0.0/swift-5.8.0-RELEASE". - Upgraded the Apple binary utilities to cctools-986 with patches. - Upgraded the Apple linker to ld64-711 with patches. - Disabled C++ modules at compiler level to replicate exactly what Apple's own fork of Clang does (an undocumented "feature") - thanks Stefan Vasilev for the hint. - Patched the LLVM linker so that it allows symbols duplicates in archives to replicate the Apple linker behaviour which is able to link the Firebase 10 frameworks in spite of their duplicated symbols. 2023-03-05 Version 3.55.1 - Fixed error when pthread_impl.h internal definitions were missed out (_PTHREAD_MUTEX_SIG_init, _PTHREAD_COND_SIG_init...) in some versions of the iOS SDK. - Selective stubbing of previously missing pre-5.1 Swift compatibility library symbols now that Apple provides them in libswiftCompatibility51.a. 2023-02-27 Version 3.55 - More robust handling of the libGameAssembly build delegation to the Unity il2cpp compiler. - When using OTA deployment, a system sound is played when the app is ready for download. 2022-12-26 Version 3.54 - Upgraded LLVM/Clang compiler (Apple branch) to release tag "clang-14.0.0/swift-5.7.2-RELEASE". - Switched to the much faster LLVM linker (LLD version 16.0.0git from llvm.org) in place of Apple's ld64 (with a possibility to use Apple's linker when necessary). - This was necessary to provide support for Objective-C msgSend stubs as implemented by Apple in Xcode 14 and whose source code was not pushed back to LLVM.org yet. - Also fixes linking errors of the like "missing symbol: _objc_msgSend$...", affecting Unity projects containing precompiled libraries that were built with Xcode 14 (such as the newest ARKit samples). - Implemented transparent .xcframework directory layout support in LLD. - Fixed detection of Unity IL2CPP compiler install location to support GameAssembly host-compiled IL2CPP libraries. 2022-10-18 Version 3.53 - Fixed a bug in the Mach-O dependency validation tool where the Swift system libraries could be unnecessarily embedded within the app, causing cryptic App Store rejections messages. 2022-09-22 Version 3.52 - Reordered the run-time load paths in the final binary to better match what Xcode does. - The link-time optimization issues that were occurring with the previous compiler version should now be gone. - Added the ability to change a private key's passphrase from the Keychain UI (in the keys' right-click context menu). - The Swift system libraries are now placed in the Frameworks subdirectory to comply with Apple's guidelines (https://developer.apple.com/documentation/bundleresources/placing_content_in_a_bundle) and prevent App Store and TestFlight upload rejections. - The app now tries to load the Swift system libraries supplied by iOS before trying to load the embedded ones (solves the "This copy of libswiftCore.dylib requires an OS version prior to 12.2.0" console error). - The image conversion tool (imgconvert) now guesses the input image file format from its contents instead of inferring it from its extension. 2022-09-21 Version 3.51.2 - Second hotfix for Clang 14 addressing copy/delete race conditions. 2022-09-19 Version 3.51.1 - Hotfix for Clang 14 for a temporary file renaming issue causing "permission denied" errors. 2022-09-17 Version 3.51 - Upgraded LLVM/Clang compiler (Apple branch) to release tag "clang-14.0.0/swift-5.7-RELEASE". - The upload tool now displays some information about the .ipa from its Info.plist (display name, bundle ID and version numbers). - Separated "build number" (CFBundleVersion) and "version number" (CFBundleShortVersionString) settings in Info.plist in automatic versioning mode. Automatic versioning only affects the build number now. 2022-06-17 Version 3.50.1 - Hotfix for Clang 13 causing permission problems during output file renaming in some Windows 10 setups. 2022-06-16 Version 3.50 - Fixed a regression in the code signer that was probably introduced in v3.49 and prevented some apps from being signed correctly. - Upgraded LLVM/Clang compiler (Apple branch) to release tag "clang-13.0.0/swift-5.6.1-RELEASE". - Upgraded the compiler cache (ccache) to version 4.6.1. - Fixed an "Insufficient memory" error given by the legacy Microsoft file copy tool when a path is too long (thanks MH6). - Improved .xcframework platform/architecture detection in builder UI. - Added an option to disable ccache (the compiler cache), to solve possible erroneous cache hash collision problems. - Improved the "validatedeps" utility so that dependency run paths inherit from the main executable run paths. - Improved third-party binary libraries and frameworks embedding logic in the master build script: in most cases a pre-packaging script is no longer necessary. 2022-06-05 Version 3.49 - CocoaPods daemon: added macOS-like base64 userland utility (used by the "BoringSSL" pod). - Improved support in the code signer for files containing foreign UTF-8 characters in app bundles. - Extended the dependency validation mechanism using validatedep to the Unity framework. 2022-05-28 Version 3.48 - Improved Mach-O binary dependency checking and validation thanks to a new command-line tool (validatedep). - Fix: the upload tool no longer attemps to re-sign app packages with the default signing identity if the "Re-sign" checkbox is not checked. - Re-fixed a regression that was already fixed in 3.35.4 but broke during build logic reorganization where Unity calls sched_yield() without including first (as seen in UnityWebRequest.mm)... looks like the Unity team hasn't noticed the issue yet. - Added 3 shortcuts in the Windows SendTo menu for advanced users to easily dissecate Apple Mach-O binary files. 2022-04-25 Version 3.47 - Project localization files (xxx.lproj) should now be handled correctly. Please notify me if it was not the case. - Updated optional Cocoapods daemon to version 11.3 and fixed a problem where Podfiles containing lines longer than 125 characters would cause issues in Windows 7. - Improved the Xcode project parser (pbxprojparse) so that file-specific compiler flags are supported (helps building Google's Protobuf library). 2022-03-29 Version 3.46 - The Keychain tool automatically keeps the root and intermediate certificates up-to-date with the contents of https://www.apple.com/certificateauthority/ - Fix: the code signer is now able to distinguish between different Apple root certificates that have been created out of the same private key. - Fix: the builder UI now allows OTA deployment using Ad Hoc certificates. - Improved trust chain construction logic in the code signer. - Fixed a problem where .ipa files couldn't be uploaded from a user's home directory containing non-ANSI characters. 2022-01-31 Version 3.45 - Added a checkbox in the builder UI to not try to use CocoaPods when a Podfile is detected, after a user suggestion. - Added a command-line utility (unxip) to extract Apple .pkg and .xip files (such as Xcode installer archives). - Fixed an issue where apps couldn't be deployed over the air if their .ipa filename contained space characters. - Fixed a UTF-8 conversion issue in the code signer where filenames containing special characters would make the code signature fail. - Fixed a crash bug in ssh.exe (affecting the CocoaPods daemon). - Fixed an issue where bogus Xcode projects created by bogus Pods would prevent some paths from being correctly detected. - Preliminary support for handling the upcoming il2cpp Xcode project format change in Unity projects. 2022-01-19 Version 3.44 - Fixed the Migration Assistant step 1 which was mistakenly not including the Swift-5.0 static libraries, preventing third-party SDKs such as the Facebook one to work. - Fixed a permissions issue with llvm-ar and other LLVM tools when dealing with delete-on-close temporary files on Windows 7. - Fixed the "Create dSYM" checkbox which was no longer working in the builder UI. - Fixed a crash bug in the builder frontend when no network connection is available. - Brought long pathname support to the compiler cache and other tools. Quite a change: please notify me of regressions. - Added a DMG file creation tool (makedmg) for the smart few who also use this toolchain to build their Mac apps. Supports symlinks, permissions, folder cosmetics and custom volume icons. 2021-12-10 Version 3.43 - Now supports additional libraries and frameworks that rely on the Swift runtime (e.g. IronSource). 2021-12-07 Version 3.42 - The builder UI and master script now support dependency-specific compiler and linker flags, so as to avoid "duplicate class" issues. - Fixed a crash bug in the OTA deployment tool when neither the CFBundleName nor the CFBundleDisplayName keys were defined in an app's Info.plist. - Fixed a couple bugs in the cartool assets compiler where some icons elements could be packed with the wrong sizes (affected app icon sets). - Improved the logic of the signer ID and team ID extraction out of the signing certificate (thanks to a suggestion from Liviu Ardean). 2021-11-14 Version 3.41.1 - Fixed a couple JSON parsing issues in the new upload tool that could make an upload fail. 2021-11-09 Version 3.41 - Replaced iTMSTransporter and its horrible Java stack by a new native upload tool that should solve the recent App Store upload problems - please report any issues in the support forum. - Automatic detection of App IDs during uploads (inspiration: Simon Nilsson). - If I did it right, normally the "provider ID" info is also no longer needed for App Store uploads - let me know if that was not the case. - Upgraded toolchain crypto library to LibreSSL 3.4.1. - Recompiled LLVM/Clang without debug asserts. 2021-11-02 Version 3.40 - Upgraded LLVM/Clang compiler and utilities (Apple branch) to release tag "clang-12.0.0/swift-5.5.1-RELEASE". - Improved the automatic discovery of missing frameworks feature in the linker, now able to locate C++-mangled symbols in precompiled libraries and frameworks. - Fixed a bug in the build script where pre-supplied binaries and libraries built for the iOS simulator were mistakenly exposed as available to the linker. - Fixed a bug in the code signer affecting iOS 15 where signed apps would no longer be accepted for deployment with user-specified explicit entitlements. - Fixed a crash bug in the plist library when user-supplied extra entitlements property lists used by the code signer were empty plists. - Removed from the pipeline the legacy source pre-parsing stage that induced false positives with conditionally included frameworks. - Added the ipa-resigner UI to the IPA resigning script (accessible at the root of the builder directory, or from the start menu). - Upgraded Cocoapods to version 1.11.2. 2021-10-10 Version 3.39 - Updated the examples so as to make sure they still build against the latest iOS SDK. - Added a forward declaration in rdc.m for libcxxabi's __cxa_demangle() for C projects that use the remote debug logging facility. - Improved the automatic system framework supply code for non-Xcode projects. - "Default" is chosen as configuration name when none is supplied on the command line for non-Xcode projects. 2021-09-24 Version 3.38 - iOS 15 support (updated the code signer to generate a DER-encoded version of the app's entitlements that became mandatory with this iOS release). 2021-09-09 Version 3.37 - The builder now generates a build.log file in the project directory. - The builder UI and the master build script will now detect when someone attempts to build an Xcode project for the iOS *simulator* and politely explain the user that he shouldn't try putting diesel in a gasoline tank. 2021-08-20 Version 3.36.1 - Fixed a codepage problem when using the CocoaPods daemon that would lead to Podfile corruption (Windows insists in writing Unicode files with a BOM, which most tools don't expect). - Multiple other reliability fixes in the CocoaPods daemon script. 2021-08-18 Version 3.36 - Upgraded linker to ld64-609 from Apple + patches. - Upgraded binary utilities to cctools-973.0.1 from Apple + patches. - Fixed an issue with Clang 12 where the user-supplied headers search path resolution implementation in my version of Clang was dissymetrical to the official implementation. - Fixed an issue where the linker would mistakenly infer the SDK version number from the builder's install path if the builder was installed in a nonstandard location whose path contained a dotted number. - Added a "try again" feature to the linker when it wants to open object files that are temporarily locked out by virus scanners (N.B.: Malwarebytes' is known to cause such problems. Consider *disabling* it when building.) - Added a notice in the installer that Xcode projects should be located as close as possible to the drive root so as to avoid hitting the 260 characters path limit in Windows common tools. 2021-06-08 Version 3.35.4 - "Fixed" a crash bug in the Clang compiler where vector resizing would invalidate the container (as seen in several Unity projects). - Fixed (by hotpatching) a compilation issue due to a bug in Unity-generated code where they call sched_yield() without including first (as seen in UnityWebRequest.mm). - The installer now invites to set an exclusion in Windows Defender and proposes to disable the Program Compatibility Assistant so as to speed up the toolchain. - A support forum has been created (at last): https://www.pmbaty.com/iosbuildenv/help/ - please direct your support request there from now on. 2021-05-21 Version 3.35.3 - On-the-fly patching of Podfiles to force CocoaPods to use their new Content Delivery Network instead of cloning the whole GitHub master repository. This crucial change (that Unity should adopt urgently) saves GIGABYTES of space, and HOURS of download time! - Fixed a timeout issue in the CocoaPods daemon where large projects taking too long to set up their pods would cause a connection failure. - Improved automatic correction of flags incorrectly passed to the linker by Xcode projects using the compiler driver's "-Wl,-flag,flagoption" syntax. - Automatic fixing of the "aps-environment" extra entitlement value (forced to 'production' when signing with a distribution certificate and 'development' in all the other cases). - Preliminary support for building apps that contain app extensions (.appex). Please report if you find bugs or issues with app extensions. 2021-05-13 Version 3.35.2 - Fixed a nasty bug in the plist utility that broke key/value addition/deletions from the command line and could prevent apps from being accepted on the App Store. 2021-05-08 Version 3.35.1 - Fixed a bug in the linker where the minimum iOS version and SDK version were mixed up in the generated mach-o load commands, resulting in App Store rejection messages because of an outdated SDK. - Added a command-line option to the PList conversion tool to alphabetically sort the property lists in XML format according to their key names. 2021-05-04 Version 3.35 - Upgraded compiler toolchain to LLVM 12.0.0 Apple branch + patches (clang 12.0.0, swift 5.5-dev). - Anciliary .meta files are automatically removed from app bundles before code signature in re-signing and upload scripts to preserve signature validity. 2021-04-29 Version 3.34 - WARNING: big changes in this update. KEEP YOUR PREVIOUS INSTALLER AND SDK FOR SAFETY and do contact me at if you find a regression. - New logic in the master build script that improves CPU cache usage (builds all targets for each source file rather than all source files for each target) when targeting multiple archs. - Changed build directory layout to be more compatible with Xcode's and relocated output directories in a subdirectory of the build directory. - More correct handling of Xcode project target dependencies in the master build script (added -dependencies command to pbxprojparse). - Fixed an issue with library ordinals in the linker input that prevented some libraries expecting to be located higher in memory than the source files calling them (e.g. Vuplex) from working correctly. - Greatly improved automatic resolution of missing symbols during link phase (thanks to new -hint_missing linker flag and pre-mapping of libraries and frameworks available to the project). - The remote debug console now uses LLVM's C++ ABI demangler instead of mine (it was about time). - Changed iTunes download URL for the remote debug console so as to download a *desktop* version and not the Windows Store one which is incompatible with USB hooking. - Fixed an issue where some dynamically-loaded binaries were not correctly embedded in the final app. - Added the ability to embed multiple binaries from the builder UI. - Robust detection of when to recompile or relink files by comparing input file modification times and passed flags. - Fixed the migration assistant so as to make the iOS SDK 14.5 usable (the C++11 headers are now expected to be in SDK/usr/include/c++/v1 instead of SDK/lib/c++/v1). - The linker is now able to read the SDK version from the SDK PLists, obsoleting the -sdk_version flag and enabling clang to drive it directly when necessary. 2021-04-11 Version 3.33.4 - Implemented support for the .xcframework directory layout directly in the ld64 linker. This change should simplify the extra linker flags quite a bit. - Better management of manually-added extra frameworks in the builder UI (reduced frameworks redundancy). 2021-04-09 Version 3.33.3 - Fixed topological sorting of Xcode build targets (enables building CocoaPods-based AdMob projects with the latest available AdMob plugin). - Fixed a problem with missing UIRequiredDeviceCapabilities when submitting single-arch builds on App Store Connect. - Slightly better logic in figuring out a Xcode project's implicit header paths, to mimic Xcode's header maps more closely. - Added a user-submitted tip in the documentation to workaround a well-known issue involving App Store uploads rate limitation (i.e. temporarily use a hotspot connection). 2021-04-03 Version 3.33.2 - Reverted linker change from 3.33.1 which was causing undesireable side effects in projects where complete exposition was unnecessary (duplicate classes, etc). - Updated troubleshooting instructions about Firebase and Google Mobile Ads / AdMob. 2021-03-29 Version 3.33.1 - When static libraries are detected to contain Objective-C code, the -force_load flag is automatically passed to the linker (equivalent and more focused than -ObjC). 2021-03-24 Version 3.33 - Better (read: less incorrect) logic for linking static libraries, so that duplicates can be better stripped by the linker and explicit ObjC categories loading flags can be respected. - Added a note in the documentation to explain when to use the -ObjC linker flag and when not to in the troubleshooting section. 2021-03-14 Version 3.32.1 - Fixed a few problems in Microsoft's OpenSSH port (the 'ssh' and 'scp' utilities used by the CocoaPods daemon). 2021-03-12 Version 3.32 - Added useful information in the documentation on how to integrate the Facebook SDK without Swift. - Better handling of long pathnames in the host side of the CocoaPods daemon (additionally no longer using the Cygwin subsystem). - Better handling of long pathnames by the Clang compiler. What a crippling limitation. Reminds me of "who'd need more than 640 kb of RAM anyway?" - Nested binary frameworks and libraries are now laid out at the same level to comply with App Store requirements. 2021-03-01 Version 3.31.6 - User-supplied extra frameworks are now passed to the linker using the "-Fsearch/path -framework FrameworkName" semantic instead of static linking to allow multiple definitions of the same framework harmlessly. - Better logic when symlinking binary frameworks supplied as Pods before linking the main project, so as to build more projects out of the box (i.e. without extra flags). - Ancilliary files ending in .meta (created by Unity) are stripped from the app package before codesigning to prevent the creation of invalid signatures. - Fixed another bug in the code signer where embedded bundles (e.g. frameworks) recursively signed would expose an incorrect CodeResources to the top level code signing instance. - The build script now enforces single-threaded compilation when run in verbose mode so as to make diagnostics more readable. 2021-02-24 Version 3.31.5 - Fixed a bug in the TBD v4 replacement code in the linker related to linking macOS binaries in Catalyst mode. - Added a STRIP_SYSLIBROOT environment variable to inform strip about the location of the platform SDK to use when delegating its task to the linker (so as to avoid a lot of warnings). - The build script now displays the builder version when run in verbose mode. 2021-02-23 Version 3.31.4 - Upgraded compiler toolchain to LLVM 11.1.0 Apple branch + patches (clang 11.1.0, swift 5.4-dev) with all-new symlink emulation code. - Pods are now built in the right order (helps in case of interdependent pods). - Changed default local symbol visibility from "hidden" to "default" for everything except app binaries (libraries, frameworks, bundles). This increases binary size, but allow Pods depending on other Pods to build. - Fixed a bug in the code signer where deep signatures would fail because of incorrect sorting (longest first is not enough, e.g. a/b/c/d/e is shorter than a/b/c_with_long_pathname but nonetheless deeper). - The build script now fixes loader paths in libraries or frameworks that depend on other libraries or frameworks. - Now able to build AdMob 8.x Unity projects through that appalling construction of the human brain called CocoaPods. Next. 2021-02-16 Version 3.31.3 - Fixed compiler crashes which were caused by filesystem support code changes in the Apple LLVM codebase that were incompatible with the symlink emulation code. - The compiler version is now LLVM 10.0.0 Apple branch + patches (clang 10.0.0, swift 5.3.3-RELEASE). Clang 12 will come back soon. - For integrators: when calling LLVM/clang/swift binaries explicitly, the symlink code can be disabled if the IOSBUILDENV_FOLLOWSYMLINKS environment variable is set to "0" or "false". - Fixed a crash bug in the Xcode project file parsing utility. - Added support for iOS SDK 14.4 and bridging with the Swift-5.1 compatibility libraries, theoretically compatible with future Swift versions. WARNING: Swift support is not ready yet. - Fixed the CocoaPods daemon startup script which was broken in 3.31.2 release. - Fixed a problem where the -fno-objc-weak flag (allowing weak references in non-ObjC code) was incorrectly set if defined in the Xcode project while ARC was globally disabled (yet another example of Xcode's excessive tolerance on bogus projects). - Fixed a problem in the Xcode project file parsing utility where preprocessor definitions from external .xcconfig files were incorrectly read (affected Firebase). 2021-02-08 Version 3.31.2 - Second emergency update: reverted the LLVM toolchain due to stability issues. - Code signer: fixed crash bug, now able to sign macOS apps and timestamp binaries (option -T) according to RFC3161 using Apple's own timestamp server, allowing app notarization (sponsored work). - Cocoapods daemon: updated to version 10.1 (nota: it could also be done manually with "cocoapods.cmd gem update cocoapods"). 2021-02-04 Version 3.31.1 - Fixed a bug in the builder UI where the arm64 checkbox would become unselectable. 2021-02-04 Version 3.31 - This is an emergency release to support the new (February 2021) code signing certificates issued through the G3 Apple WWDR certification authority. - Improved the code signing tool, simplified identity string syntax, automatic trust chain construction, and better CodeResources handling. - Added the ability to select an Xcode build configuration other than "Release" in the builder UI. - Added support for the progress indicator on the device during OTA app deployment. - Upgraded compiler toolchain to LLVM 13.0.0 Apple branch + patches (clang 13.0.0, swift 5.4-dev). WARNING: Swift support is not ready yet. - Upgraded linker to ld64-530 from Apple + patches. 2020-12-20 Version 3.30 - Fixed an issue where nonexistent asset catalogs referenced in a Xcode project file would cause the build to fail, whereas Xcode silently ignores them. - Fixed an issue where the linker couldn't find UnityFramework if the Xcode project root wasn't specified in the frameworks search path in the Xcode project file. - Added display icon during OTA app deployment. - Extended remote logging capability to console apps. - Improved build speed thanks to a faster process list analysis in order to know when to start a new compiler. 2020-12-07 Version 3.29 - Fixed a bug in the PList conversion code where single-item arrays were mistakenly converted into non-array values, resulting in bogus app entitlements (affecting esp. Apple Sign-In). - The "ldid -d" command can now also dump entitlements data bundled into an iOS executable. - The builder UI now displays a help tip when the user tries to embed a static library in place of a dynamic one. This should help uncluttering my mailbox. - Applied the "duplicate classes" runtime problem fix for non-CocoaPods projects. 2020-11-23 Version 3.28 - Fixed the "duplicate classes" problem that was happening with CocoaPods-enabled projects caused by an incorrect include order. - Fixed an issue with iOS SDK 14.2 supplying its own crippled Protobuf library when linking against the real CocoaPods-supplied Protobuf library. - Added an explicit hotfix for the NativeGallery plugin whose source code performs an invalid pointer assignment to replicate a bug in Apple's clang which allows such assignments without error. - Better integration of .ipa files with Windows Explorer: you can browse their content by right-clicking and deploy them by double-clicking. 2020-09-19 Version 3.27 - Implemented the V4 TBD API (of which the published specifications in the LLVM source code are wrong) in the linker to support the upcoming iOS 14 SDK. Apple please stop it now. 2020-09-15 Version 3.26 - Properly fixed the file permissions race issue in multithreaded builds. - Binary frameworks' resources are now embedded along with the framework binary. - Removed annoying confirmation dialog when flushing the remote debug console. - Fixed a bug in my strings library that prevented arm64 projects from being detected as such. Untested last minute improvement means trouble... - In-place fixes for Google VR SDK and Crashlytics pods. - Miscellaneous minor fixes. 2020-09-09 Version 3.25 - Switched compiler toolchain to LLVM 10.0.0 *Apple branch* to prepare upcoming introduction of the Swift compiler. - Fixed a crash bug in the linker when very long command lines were expanded through multiple -optlist arguments. - Fixed a possible crash bug in the linker when the objects file list specified by -filelist contained empty lines. - Fixed a bug in the Xcode project parser where preprocessor definitions containing spaces were incorrectly read. - Fixed a bug in the builder UI related to the new PList API when extra entitlements files were used. - Better support for Google Firebase (automatic injection of a missing header to work around a bug in Google's iOS code). - Added a progress bar to the CocoaPods daemon startup phase. 2020-08-06 Version 3.24 - Explicit support for Microsoft Azure Spatial Anchors framework (replicating its deployment shell script when necessary). - Cocoapods daemon: complementary .podspec files are now taken in account when constructing the staging directory. - Cocoapods daemon: now automatically picks another TCP port if the usual one is already taken by another program. 2020-07-28 Version 3.23.1 - The code signer in versions 3.21-3.23 was incorrectly sealing some keychain-access-group entitlements, leading to undeployable apps. This is fixed. 2020-07-25 Version 3.23 - Added support for AR objects in the assets compiler. - Automatic support for old-style Objective-C message dispatch prototypes when building for iOS < 8. - Improved Xcode project file parser's tolerance to faulty/bogus projects, more like what Xcode does itself. - The builder UI 'Add extra framework' button now accepts .xcframework directories if they contain the required architectures. - Build times are now recorded in a file called "buildtimes.log" in the project root. - Fixed a builder failure with UnityFramework-linked binaries and excessively long 3rd party header paths. - Fixed auto-generated DTXcode value in the apps' Info.plist. 2020-07-19 Version 3.22 - Added support for the GCC_NO_COMMON_BLOCKS variable in Xcode projects. - The ld64 linker now allows dead functions duplicates by default. - Second attempt at fixing the "file not found" archiver error by putting a retry temporization in the ar archiver - definitely a Windows 10 filesystem driver (write cache not flushed on time) or security layer (file locked out by scanner) problem. 2020-07-10 Version 3.21 - Added support for linking against Swift frameworks (such as Appodeal and the newer Facebook SDKs). - Attempt at fixing the "file not found" linker error on existing object files (seems to involve Windows Defender). - Improved xib/storyboard compiler. - Added an update available notification in the builder UI. 2020-07-01 Version 3.20 - Improved header search paths resolution in Xcode projects (less extra compiler flags manual additions). - Improved xib/storyboard compiler. 2020-06-26 Version 3.19 - Upgraded linker to ld64-512.4 from Apple + patches. - Upgraded binary utilities to cctools-949.0.1 from Apple + patches. - The remote debug console now correctly catches iOS13+ syslogs that use the new SSL protocol. - Experimental Interface Builder launch screen storyboard compiler. - Auto-detection and automatic linking of missing frameworks that belong to the iOS system frameworks. - Faster build script. - OPTIONAL CocoaPods support (through a quasi Darwin-compatible BSD UNIX subsystem daemon). 2020-04-14 Version 3.18 - Improved cartool assets compiler to support BOM storage version 17 and provide iPhone 90x90 app icons. - Added .imageset, .dataset and .colorset to the list of cartool's supported asset types. - Added a note in the remote debug console that iOS13+ syslogs can't be caught yet (fix on the way). 2020-02-27 Version 3.17 - Upgraded Clang compiler and related tools to version 9.0.1 + patches. - Updated linker to ld64-450.3 from Apple + patches. - Restored OTA deployment for in-house (enterprise) distribution certificates, correctly this time. - Fixed a crash bug in the upload tool when the verbose mode was not used and a few other UI fixes. - Fixed a crash bug in the code signer when pseudo-signing embedded libraries and frameworks. - Fixed an issue in embedding extra dynamic libraries when they don't contain the required architecture(s). - Improved entitlements resolver to support Info.plist-based replacement variables and improved PList parser. - The team ID is now displayed in the builder window at signing time (in addition to the signer ID). - Fixed the automatic version renumbering logic in the upload tool (it was correct if toggled at build time). - Added the ability to rename a private key's friendly name from the Keychain UI. - Fixed some missing UI icons. 2019-10-25 Version 3.16.2 - Updated iTMSTransporter download link, which Apple enjoys moving around from time to time. 2019-10-02 Version 3.16.1 - Added the ability to specify an explicit build version when uploading an IPA with the upload tool. - Fixed the upload tool that lacked the new provider ID input field in version 3.16. - Documentation: iTunes Connect (old name) was renamed to App Store Connect (this was confusing users). - Added more explanation about app-specific passwords for App Store Connect in the documentation. 2019-09-27 Version 3.16 - Upgraded Clang compiler and related tools to version 9.0.0 + patches. - Linker: improved TBD parser code to support V3 text binary descriptions (read: iOS 13 support). - Upload tool: the user is now invited to select an iTunes Connect provider if his account is linked to several providers. - Fixed a case sensitivity bug in the code signer where bundle IDs with different casing were mistakenly identified as different. - Fixed a bug in the Xcode project file parser when external .xcconfig files are used. - Restored OTA deployment for in-house (enterprise) distribution certificates which was broken in 3.15. - The embedded binaries field in the builder UI now accepts paths that contain spaces (automatically quoted). 2019-08-23 Version 3.15 - Upgraded Clang compiler and related tools to version 8.0.1 + patches. - Upgraded linker to ld64-409.12 from Apple + patches. - Upgraded binary utilities to cctools-921 from Apple + patches. - The OTA deployment tool offers a link to install anyway if the platform detection from the browser's User-Agent failed (to work around a bug in iOS13 beta supplying a wrong User-Agent on iPads). - Fixed missing crucial hint in documentation for building CocoaPods-based projects with manually-supplied frameworks. - Fixed handling of provisioning profile entitlements in the code signer when the XML data has bad indentation. - Fixed a crash bug when creating certificate signing requests with non-ASCII common names. - Fixed problem in cartool resources compiler where merging multiple .xcassets directories was broken. - Fixed clipboard copy (Ctrl + C) in remote debug console and search filters unattendedly losing focus. - Improved the builder UI: upload tool button, auto-disable OTA when certificates or profile are unsuitable. 2019-07-02 Version 3.14 - Support for Unity 2019.3 and the separate Unity framework. - Upgraded Clang compiler and related tools to version 8.0.0. - Support for iTunes Connect providers (i.e. ability to distinguish when a developer is member of multiple teams). - Fixed the .ipa resigning tool UI which was no longer working correctly. - Better handling of code directories when multiple hash types are used in the code signer. - Symlinked resources generation disabled by default because some iOS versions don't handle these archives correctly. - Fixed merge of implicit and explicit entitlements by the code signer (from provisioning profile and external file). - The version of the iOS SDK in use is now displayed in the builder UI. - Still no CocoaPods. I couldn't fullfill this promise due to impossible Windows limitations. There are workarounds. - Other miscellaneous fixes. 2018-11-07 Version 3.13 - Upgraded Clang compiler and related tools to version 7.0.0. - The Clang compiler now supports the OpenMP multithreading #pragmas. - Upgraded code signer to support code directory structures from version 2.2 to version 2.4 (latest from Apple). - Much better remote debug console: syntax coloring, log filtering and ability to read iOS syslogs over USB. - Now creates .dSYM files for separate DWARF debug symbols storage. That should help Crashlytics work. - Fixed a crash bug in the debug symbol stripping utility. - Fixed a bug in the PList conversion utility that prevented multiple edits from being done in a single call. - Miscellaneous fixes and improvements. 2018-09-18 Version 3.12.6.1 - Fixed some critical regressions caused by the 3.12.6 update. 2018-09-17 Version 3.12.6 - Enabled bitcode stripping during binary size reduction when appropriate. - Automatic detection of some extra code signing entitlements. - The code signer now automatically strips certain entitlement keys when signing for App Store distribution. - Fixed a bug in the plist conversion tool where an attempt to delete an unexistent key caused Info.plist corruption. - Fixed a crash bug in the symlink emulation code. - Removed all references from the builder UI to the Unity logo and branding typography at Unity's request. 2018-08-23 Version 3.12.5 - Fixed a regression in the uploader UI where the keychain icon was not correctly refreshed. - Fixed a deadlock in the Xcode project parser when bogus projects contain variables recursively defined as themselves. - Suppressed a harmless warning during the compilation of the remote debug console. 2018-08-14 Version 3.12.4 - Improved the .ipa creation tool to allow the creation of very large ipa files (> 2Gb). - Reworked the launch screen compilation logic with symbolic links to avoid duplicates and save space in the ipa. - The code signer is now able to hash .ipa files that contain symbolic links. - Improved the migration assistant so that it looks for Xcode in other places than /Applications. - Improved the upload tool so that it detects and handles broken iTMSTransporter installations. - Restored the CocoaPods subprojects building ability which was broken since 3.12.3. - Fixed a bug in the Xcode project parser that could make it fail when a special fileRef id was used. - Fixed a bug in the Xcode project parser that could cause some files to be missed during build phases enumeration. - Fixed a bug in the automatic version number generation that occured with 2-digit months or days beginning with a 0. 2018-07-23 Version 3.12.3.1 - EMERGENCY FIX: version 3.12.3 had a critical bug that prevented apps to be packaged properly. Sorry for the inconvenience. 2018-07-23 Version 3.12.3 - Added the ability to guess all dependent frameworks when adding a third-party framework (e.g. Google Mobile Ads). - Fixed a crash bug in the linker due to a command line buffer overflow. - Fixed a crash bug in the keychain tool that would no longer start when all the certificates have expired. - Fixed a crash bug in the compiler symlink emulation code. - Fixed a bug in the linker where multiple levels of re-exported libraries were not correctly scoped (TBD V3 format). - Linker improvement so that the same search path cannot be added multiple times. - Rewrote the Xcode project file parsing tool in a more proper way - groundlayout for a more generic builder. - As the newest iOS SDKs no longer support armv7, these targets have been removed from the sample projects. 2018-07-11 Version 3.12.2 - Improved the OTA deployment tool so that it can deploy the app over Wifi to multiple devices simultaneously. - Fixed a nasty bug in the source pre-parser utility that caused some projects to fail at linking. - Fixed another nasty bug in the Xcode project file parser utility that caused some source files to be missed out. 2018-07-01 Version 3.12.1 - Upgraded Clang compiler and related tools to version 6.0.1. - Upgraded compiler cache (ccache) to version 3.4.2. - Fixed a bug in the builder UI where the "deploy" checkbox could no longer be unchecked. 2018-06-28 Version 3.12 - iOS 12 / Xcode 10 support. - Upgraded Clang compiler and related tools to version 6.0.0. - Restored support for clang modules (@import). Note that they automatically disable the compiler cache. - Improved the assets compiler to support monochrome JPEG files. - Improved timestamping consistency in the code signer by adding a retry delay (in case virus scanners lock the file). - Fixed an irrelevant warning for case mismatches in identity strings in the code signer. - The installer now backs up existing iOS SDKs from previous versions instead of simply deleting them. 2018-06-19 Version 3.11 - First version with a true assets compiler, now can build projects using ARKit reference images. Feedback welcome. - Improved build logic around CocoaPods. 2018-05-17 Version 3.10.1 - Improved Xcode project file parsing (explicit file types are now recognized, unspecified file types are now guessed). - Improved CocoaPods support thanks to user feedback. - Convert absolute paths to relative paths when possible when adding frameworks from the builder UI. - The Xcode project file parser now ignores with a warning any unresolved file references instead of throwing an error. - The linker now emits a warning for unknown options instead of throwing an error (helps digesting bogus project files). - Changed some artwork and icons to better comply with Unity's policies. 2018-05-08 Version 3.10 - Initial support for CocoaPods subprojects. Feedback is welcome. - Refactored the master build script so that several instances may run in parallel (Jenkins-friendly). - Fixed bug where the -fmodules flag was mistakenly passed to the linker instead of the compiler. - Automatic removal of alpha channel on App Store artwork files. - Fixed wrong detection of SDK version by the linker when the builder is installed in a custom path. - Fixed a crash bug in the Keychain tool when the generated keychain item filenames were too long for the system. - Updated documentation about signing identities and provisioning profiles. 2018-04-07 Version 3.9 - Support for the new undocumented TBD format (v3) used in the iOS 11.3 SDK and being phased in by Apple. - Added support for third party libraries and framework that are supplied in non-fat mach-O format (i.e. single arch). - Added the possibility to embed extra libraries and frameworks from the builder UI. - PARTIAL support for compiling asset catalogs (only app icons and splash screens are supported at the moment). 2018-02-02 Version 3.8.2 - Fixed a bug in version 3.8.1 that caused .ipa creation to produce undeployable bundles. - Fixed a bug in version 3.8 that affected the creation of private keys and certificate signing requests with the Keychain Tool. 2018-01-23 Version 3.8 - Upgraded Clang compiler to version 5.0.1. - Seriously simplified the handling of keychain items through auto-detection each time it is possible. - Recursive binary signing to codesign embedded binaries, libraries and frameworks (feedback welcome). - The upload script now locates iTMSTransporter even when it is installed in a non-default path. - The build scripts starts a bit faster and stops earlier on compile errors even in multithreaded mode. - Improved implicit include paths guessing logic enabling to build more project without extra compiler flags. - Added an .ipa file re-signing tool (only in the full iOS Build Environment, not present in the Asset Store version). - Minor GUI changes. 2017-12-22 Version 3.7.6 - Better support for the Xcode 9 / iOS 11 iTunes Connect upload format using asset catalogs, hopefully final (feedback welcome). - Added an automatic version number generator to generate unique incremental version numbers for your builds. - Fixed a crash bug in the source pre-parsing utility when the Clang modules syntax was used. - The source pre-parsing utility now toggles Clang modules on/off automatically when required. 2017-12-04 Version 3.7.5 - Greatly improved the png CgBI crusher tool's speed (known by Apple as "PNG optimizations for iOS"). - Added a checkbox in the Unity builder and an option in the build script to enable/disable PNG crushing. - Auto-fixing UIRequiredDeviceCapabilities in Info.plist if target build archs override those in the Xcode project. - Fixed a bug in the upload script that could cause ipas uploaded to iTunes Connect to be rejected because of an invalid CFBundleIcon. 2017-11-29 Version 3.7.4 - Added a reimplementation of Apple's pngcrush tool to "optimize" PNG files for faster loading on iOS. - Removed a file from the previous release that shouldn't have been here. 2017-11-19 Version 3.7.3 - Better support for the Xcode 9 / iOS 11 iTunes Connect upload format using asset catalogs. - Added the possibility to merge extra entitlements when resigning an app prior to uploading it to iTunes Connect. - Added the ability to embed App Store artwork picture in the signed package. - Fixed a bug in the pbxproj file parser that caused XML format errors in the builder. - Fixed a crash bug in the plist file manipulation tool. - Fixed a problem where some virus scanners wouldn't release the .obj files fast enough for the linker to successfully collect them. - Unity builder no longer proposes to build for 32-bit if project doesn't support it (iOS11+ projects). - Small icons (search & settings.app) are now picked up correctly if they exist and generated if they don't. 2017-11-09 Version 3.7 - Upgraded Clang compiler to version 5.0.0 (latest). - Fix: the build script now picks up GCC_PREPROCESSOR_DEFINITIONS from Xcode project files correctly. - Fix: the pbxprojparse tool no longer reports the wrong string size when resolving variables in Info.plist. - Support for Xcode 9 projects. 2017-10-30 Version 3.6.2 - Unity-specific: better il2cpp/stdint type mismatches detection. - Unity-specific: Xcode project-specific variables are now resolved in the Info.plist and in the build script. 2017-10-18 Version 3.6.1 - Fixed a crash bug in the source files pre-parsing utility. - Unity-specific: better handling of il2cpp/stdint type mismatches leading to better compatibility. 2017-10-09 Version 3.6 - Improved code signing logic to support apps with embedded binaries and dylibs on iOS 11+. - Pre-parsing of source files to deduce all implicit frameworks to improve out-of-the-box building of projects. - Bugfix: the extra frameworks search paths are now correctly extracted from project.pbxproj files. 2017-09-08 Version 3.5.1 - CRITICAL: fixed code signing omit rules that caused the resigned .ipas to be rejected by iTunes Connect. - Strenghtened parsing of omit rules in the code signer. - Restored compatibility with Unity 4.6 and 4.7 where the Data dir was not among the project resources but copied by a shell script. 2017-09-03 Version 3.5 - Preliminary support for embedded binaries (dylibs and frameworks). 2017-08-15 Version 3.4 - Compile times dramatically improved through the use of a better compiler cache (ccache). - Upgraded Clang compiler to version 4.0.1 (latest). - The migration assistant now erases the previous SDK files when it's about to deploy a new one. 2017-08-09 Version 3.3.1 - CRITICAL: fixed a command-line parsing bug in previous version that made the linker fail randomly. Thanks to the users reporting the problem. 2017-08-03 Version 3.3 - Better parsing of Xcode projects (support for PBXVariantGroups), meaning localization support for Unity projects. - Improved third-party framework detection and binding in Unity projects. - Fixed the ranlib call in the ar archive builder that prevented static libraries to have a valid table of contents. 2017-07-07 Version 3.2.1 - Better icon handling logic resulting in neater app icons (credits: B. Bouffier). - The taskbar now flashes when the build is ready for deployment. - Fixed a problem in the Migration Assistant where the private keys would not be correctly exported. 2017-06-10 Version 3.2 - The OTA deployment tool now also features QR codes for easy deployment with the iOS QR code reader. - Fixed a misleading warning in the Migration Assistants when no code signing identity is found. - Miscellaneous minor fixes. 2017-05-09 Version 3.1.1 - Fixed a Unity-specific bug where splash screens would be of incorrect size on some wide screens. 2017-05-09 Version 3.1 - Added support for extra entitlements (specified at code signing time through an external .plist file). - Fixed a bug where the linker would incorrectly guess the SDK version when used with older SDKs. - Fixed a build logic problem when debug console messages redirection target variable was set to "myself". - Fixed the build script help text no longer displaying in full because of an unescaped character. - Improved Xcode project parser to suppress reentrant parameter definitions. 2017-04-28 Version 3.0.3 - Upgraded the Java VM to fix iTunes Connect upload problem using the most recent Apple's iTMSTransporter protocol. - Fixed a logic flaw in the Xcode project parser when looking for a grouped file's path prefix. - Fixed a jailbreak-specific bug where an app couldn't be pseudo-codesigned in the absence of a provisioning profile. 2017-04-20 Version 3.0.2 - Fixed a bug where the code signer would generate an invalid signature with some Info.plists. 2017-04-12 Version 3.0.1 - Fixed a regression bug introduced with v3.0 where the code signer would fail on XML data guessing the bundle identity string. - Fixed a regression bug introduced with v3.0 where the upload script was no longer working as expected (I should take some rest). 2017-04-09 Version 3.0 - Supports iOS 10.3. - Fully 64-bit toolchain allows to generate very large object files on most recent iOS architectures. - Upgraded Clang compiler to version 4.0.0 (latest). - Upgraded ld64 linker to version 274.2 (latest) in multithreaded mode. - Upgraded cctools to version 895 (latest). - Improved linking times thanks to threaded linker and archive creation time thanks to better libzip tuning. - The compiler now reads its flags from flag files allowing for virtually unlimited compiler flags, overcoming the 1024 char barrier. - Smaller ipa archives thanks to binary stripping when building in release mode. - The migration assistant now also migrates the existing signing identities and provisioning profiles. - Added the ability to import several certificates from a .p12 file. - Better parsing of include files in .pbxproj files generated by the Unity editor allow the building of more complex projects out of the box. - Simplified OTA deployment using a data matrix: flash the code, your app installs. - OTA deployment to multiple devices is supported (one at a time, press ESC to stop). - All projects (including Unity projects) can have their standard output redirected to the remote debug console. - The remote debug console receives a stack dump over the air when your application crashes if debug symbols are not stripped. - Added the possibility to load/save builder configuration files and open them by double-click in the iOS Project Builder for Unity. - Simplified sample projects configuration and project creation wizard. - Sample project configurations are no longer stored in Makefiles but in batch scripts. - Many miscellaneous fixes. - 32-bit Windows support has been dropped. 2012...2017 2.x series (legacy) - 2017-02-14 (2.30): Fixed a reentrancy problem in .pbxproj file parsing with the latest Unity/Xcode pair to date. - 2017-01-14 (2.29): Warn to prevent a possible upload problem when character ! is found in iTunes password/Apple ID. - 2016-12-16 (2.28): Fixed a problem with the latest Unity editor to work around a recursive definition of the OTHER_LDFLAGS linker variable the Xcode project file. - 2016-12-16 (2.28): Added support for .tbd files to be correctly seen as libraries in the "pbxprojparse" Xcode project file parser. - 2016-11-23 (2.27): Added a tiny, crucial compiler flag (-fvisibility=hidden) that can drastically reduce the size of your binaries by crunching the LINKEDIT segment to 1:10 of its size in the list of default compiler flags (credits: K. Sokharev). The side-effect is that all symbols that are not explicitly exported in your code with __attribute__((visibility("default"))) will no longer be accessible from outer space. - 2016-11-23 (2.27): Worked around a problem where some (many) third-party Unity plugins would leave incorrect pathname syntaxes in the project's .pbxproj file, by forcing all path separators to forward slashes. - 2016-10-11 (2.26): iOS 10 support. - 2016-10-11 (2.26): Upgraded clang/llvm compiler to version 3.9.0 + patches. - 2016-10-11 (2.26): Upgraded cctools binary utilities to version 886. - 2016-10-11 (2.26): Link-time optimization (LTO) support. - 2016-10-11 (2.26): LLVM bitcode support. - 2016-10-11 (2.26): Added build configurations support. - 2016-10-11 (2.26): Bumped all sample project's minimum supported iOS version to 6. - 2016-10-11 (2.26): Miscellaneous fixes (build logic, entrypoint selection, undocumented ld64 V2 TBD support). - 2016-09-05 (2.25): Fixed compiler crash when using an empty include file. - 2016-09-05 (2.25): Fixed compiler include traversal chain problem. - 2016-09-05 (2.25): Unity: explicit Vuforia plugin support. - 2016-09-05 (2.25): Added a new build step: user-suppliable pre-packaging script. - 2016-09-05 (2.24): Updated all the sample projects to comply with the latest iOS requirements (many of them were no longer working). - 2016-09-05 (2.24): Updated the generated template code in the project creation wizard tool. - 2016-08-17 (2.23): Fixed a bug in the compiler's UNIX symlink emulation and resolving code. - 2016-08-17 (2.23): Implemented a PHP-like stat() cache in the compiler that speeds up compilation quite significantly. - 2016-08-01 (2.22): Fixed a bug where the SDK version bit in the LC_VERSION_MIN_IPHONEOS load command was set incorrectly, causing App Store rejections. - 2016-07-14 (2.21): Upgraded clang/llvm compiler to version 3.8.1. - 2016-07-14 (2.21): Fixed a bug in the symlink code where two adjacent dir separators in a path caused a compiler crash. - 2016-07-14 (2.21): Fixed a bug where some special characters in passwords were incorrectly escaped. - 2016-07-14 (2.21): Fixed a bug where round iOS version numbers would generate some incorrect Info.plist key values. - 2016-05-23 (2.20): Added compiler Objective-C modules support (@import "blah"). - 2016-05-23 (2.20): Repaired compatibility with Google's iOS mobile ads SDK and framework. - 2016-05-23 (2.20): Miscellaneous fixes. - 2016-05-06 (2.19): Added a long-awaited iTunes Connect upload tool! - 2016-05-06 (2.19): Restored Unity 4.6 and 4.7 support. - 2016-05-06 (2.19): Upgraded cctools binary utilities to version 877.8. - 2016-05-06 (2.19): Upgraded ld64 Mach-O linker to version 253.9. - 2016-05-06 (2.19): Improved code signer to support V2 resource envelopes, entitlements and resource sorting. - 2016-05-06 (2.19): Upgraded Cordova library version in sample project to Cordova4. - 2016-05-06 (2.19): Miscellaneous fixes. - 2016-03-17 (2.18): Upgraded clang/llvm compiler to version 3.8. - 2016-03-17 (2.18): Separated compiler-specific includes from the main SDK. - 2016-03-17 (2.18): Build flag updates for Unity. - 2016-03-17 (2.18): Miscellaneous fixes. - 2016-02-14 (2.17): Fixed SHA1 miscomputation when filesize is a multiple of 256000 bytes (credits: Konstantin Sokharev). - 2016-01-25 (2.16): Fixed Xcode version mismatch problem for some Unity projects. - 2015-11-21 (2.15): iOS 9 support. - 2015-11-21 (2.15): Upgraded clang/llvm compiler to version 3.7. - 2015-11-21 (2.15): Upgraded cctools binary utilities to version 870. - 2015-11-21 (2.15): Upgraded ld64 Mach-O linker to version 253.3. - 2015-11-21 (2.15): Unity 5.2.3 support with the ability to include external frameworks directly from the builder. - 2015-11-21 (2.15): Rewrote Xcode project parser (pbxprojparse). - 2015-11-21 (2.15): Added symbolic links in include and import directives support in Clang even on Windows. - 2015-11-21 (2.15): Dropped Windows XP support. - 2015-02-09 (2.14): iOS 8.1 support. - 2015-02-09 (2.14): Upgraded clang/llvm compiler to version 3.6. - 2015-02-09 (2.14): Upgraded cctools binary utilities to version 862 - 2015-02-09 (2.14): Upgraded ld64 Mach-O linker to version 241.9. - 2015-02-09 (2.14): 64-bit code generation (arm64, arm64v8) is now considered stable. - 2015-02-09 (2.14): Better support for non-alphanumeric characters in passphrases. - 2015-02-09 (2.14): Much improved Unity Xcode project parsing. - 2014-09-28 (2.13): iOS8 support. - 2014-09-28 (2.13): Upgraded clang/LLVM compiler to version 3.5.0, cctools binary utilities to version 855 and ld64 linker to version 236.3. - 2014-09-28 (2.13): Increased linker stack size to 8Mb to enable linking large projects. - 2014-09-28 (2.13): A default code signing profile can now be specified in the Keychain tool. - 2014-09-28 (2.13): Added an automatic deployment tool for Unity projects. - 2014-09-28 (2.13): Added a sample project using Cordova (PhoneGap). - 2014-09-28 (2.13): Various corrections. - 2014-02-18 (2.12): Fixed a bug that invalidated .deb packages creation for Unity projects. - 2014-02-18 (2.12): Updated the RotationDemo sample project for iOS6+. - 2014-02-18 (2.12): Updated the Wolf3D sample project for iOS5+. - 2014-02-11 (2.11): Fixed a crash bug in the project creation wizard when multiple architectures are selected. - 2014-02-11 (2.11): Updated the MobileSubstrate sample for iOS 7. - 2014-02-03 (2.10): Upgraded the cctools binary utilities to version 845. - 2014-02-03 (2.10): Upgraded the clang compiler to version 3.4. - 2014-02-03 (2.10): Deprecated armv6 and iOS < 5 support to prepare the transition towards arm64. - 2014-02-03 (2.10): Added a Unity project builder tool. - 2014-02-03 (2.10): The build system now creates universal binaries (fat mach-o) containing several architectures. - 2014-02-03 (2.10): Separated the generic Makefile templates in bits. - 2014-02-03 (2.10): Removed automatic capitalization of first character in project names. - 2014-02-03 (2.10): Added a button to export a signing identity to a Mac in the Keychain tool. - 2014-02-03 (2.10): Added arm64 support in the lipo and ldid tools (64-bit code signature is now possible). - 2014-02-03 (2.10): The code signer now also supports universal binaries. - 2013-11-30 (2.9): Fixed a bug in the project creation wizard concerning embedded provisioning profiles (reported by A. Seger). - 2013-11-30 (2.9): Disambiguated the instructions concerning the export of .p12 files from a Mac's Keychain. - 2013-11-13 (2.8): Dramatic improvement of the linker's speed and prevention of a buffer overflow (patch by Gerhard Seiler @ Sproing GmbH). - 2013-11-13 (2.8): Automatic insertion of the CFBundleSupportedPlatforms key in the apps' Info.plist. - 2013-11-13 (2.8): Rewritten the Makefile used for building ANEs to better handle third-party libraries (suggestion by Alex Winx). - 2013-10-01 (2.7): All the APIs of the IOS 7 SDK are supported. - 2013-10-01 (2.7): Digital identities and code signature are supported (jailbreaking no longer required). - 2013-10-01 (2.7): Added a keychain management tool. - 2013-10-01 (2.7): Upgraded compiler and use of the latest available Apple sources (clang-3.3, ld64-136, cctools-839). - 2013-10-01 (2.7): Important simplification of the Makefiles. - 2013-10-01 (2.7): Compatibility with non-standard shells such as Cygwin. - 2013-10-01 (2.7): No longer depends on iTunes to handle binary .plist files. - 2013-10-01 (2.7): Linux and FreeBSD versions of the toolchain are provided. - 2013-05-09 (2.6): Added a sample that shows how to build an Adobe Native Extension for Adobe AIR. - 2013-05-09 (2.6): Fixed a bug in strip, where the input file could not overwrite itself when no output file was specified. - 2013-05-09 (2.6): Fixed a bug in makedeb, where some long pathnames would be stored incorrectly in the tar structure. - 2013-02-10 (2.5): Support for all the APIs of the iOS 6.1 SDK. - 2013-02-10 (2.5): Added a console program sample. - 2013-02-10 (2.5): Added the crt_externs.h missing header (forgotten by Apple in the 6.1 SDK). - 2013-01-18 (2.4): Fixed a bug where the resources copy in the final IPA would fail on Windows XP. - 2013-01-18 (2.4): Removed the PList editor which was causing false positives by some antiviruses (AVG). - 2013-01-18 (2.4): All PList files (binary or XML) now open in Visual Studio and are automatically converted to binary in the final IPA. - 2013-01-18 (2.4): Added the AppSync packages to the installer. - 2013-01-18 (2.4): Added the possibility to deploy AppSync and the GNU debugger directly from the www.pmbaty.com/cydia source in Cydia. - 2013-01-18 (2.4): Fixed a bug in the demo version. - 2012-12-12 (2.3): IMPORTANT: Fixed a bug in ld64 responsible for the "ld: file too small for inferred architecture" error. - 2012-12-12 (2.3): Added instructions on how to link a dynamic library or a third-party framework to an iOS project. - 2012-12-09 (2.2): The installer uses now the Nullsoft Scriptable Install System (NSIS). - 2012-12-09 (2.2): This new installer handles the problem of corrupted or broken downloads. - 2012-12-09 (2.2): This new installer facilitates uninstalling the environment using the Windows control panel. - 2012-11-10 (2.1): Support for all the APIs of the iOS 6 SDK. - 2012-11-10 (2.1): Makes use of the latest available Apple sources (ld64-134.9, cctools-836). - 2012-11-10 (2.1): Added the GNU debugger, a debugging tutorial and the according Makefile rules for symbol generation. - 2012-11-10 (2.1): Added armv7s architecture support (Apple A6, iPhone 5/iPad mini). - 2012-11-10 (2.1): Rewrote and improved the code signature manipulation tool. - 2012-09-21 (2.0): Got rid of the Cygwin compatibility layer. - 2012-09-21 (2.0): Makes use of the latest available Apple sources (ld64-127.2, cctools-809). - 2012-09-21 (2.0): Toolchain is now 100% Win32 and 100% relocatable. - 2012-09-21 (2.0): Fixed a bug in the ar static library archiver. - 2012-09-21 (2.0): Support for the armv7 and armv7f architectures (Apple A5, iPhone 4S/New iPad). - 2012-09-21 (2.0): Memory management by automatic reference counting (ARC) is supported. - 2012-09-21 (2.0): Added the CamTest example. - 2012-09-21 (2.0): Private version for Sproing GmbH and Vicarious Visions Inc. 2010...2012 1.x series (legacy) - 2012-06-01 (1.11): Better Visual Studio integration for projects created with the Creation Wizard. - 2012-06-01 (1.11): Fixed a Makefile bug that could prevent the creation of .deb files with Visual Studio 2010. - 2012-06-01 (1.11): Refactored the SambaSettings and smbtoggle examples into PreferenceLoaderDemo and SBSettingsToggle, with package generation rules. - 2012-06-01 (1.11): Added the WifiScanner example to demonstrate external dylib loading and UIViewController navigation. - 2012-06-01 (1.11): Support for all the APIs of the 5.1.1 SDK. - 2012-03-14 (1.10): Updated the iOS Project Creation Wizard. - 2012-03-14 (1.10): Automatic generation of the _CodeSignature directory, mandatory in case of deployment in a non-jailbreaked environment. - 2012-03-14 (1.10): Correction of the instruction set type in use by the assembler (previously armv4t, now armv6 by default). - 2012-03-14 (1.10): Removed the possibility to choose the armv7 instruction set, not supported by the current linker (but will be in a later version). - 2012-03-14 (1.10): Correction of the SRC rule in the default Makefile. - 2012-03-14 (1.10): The SpringBoard icons are automatically refreshed when deploying an app as a .deb file using iFile. - 2012-03-14 (1.10): Added a SpringBoard code injection example via MobileSubstrate. - 2012-01-17 (1.9): Updated the iOS Project Creation Wizard. - 2012-01-17 (1.9): Added a graphical remote debugging console applet. - 2012-01-17 (1.9): Newly created projects now support the streaming of error messages to a remote console on the PC. - 2012-01-17 (1.9): Newly created projects now support the redirection of error messages to a log file. - 2012-01-17 (1.9): Added 9 more examples. - 2011-11-25 (1.8): iOS 5 full support (compatible with the frameworks from the 5.0.1 SDK). - 2011-11-25 (1.8): New compiler (clang/llvm), much faster in replacement of GCC. - 2011-11-25 (1.8): Support for the lightweight threads (blocks) Objective-C syntax. - 2011-11-25 (1.8): Compiler errors are better indicated (a mark is displayed below the first incriminated character). - 2011-11-25 (1.8): Better integration with the IDE (a click on a compiler error line takes you directly to the source code). - 2011-11-25 (1.8): Added the possibility to target a minimal supported iOS version for each project. - 2011-11-25 (1.8): Added the possibility to specify the processor instruction set to use (ARMv6 or ARMv7). - 2011-11-25 (1.8): Rearrangement of the build environment directory layout. - 2011-08-25 (1.7): Added the C++ headers in the Makefiles by default (they had to be explicitly included beforehand). - 2011-08-19 (1.6): Added a drop-list to the Project Creation Wizard to explicitly enable iPad support in newly created apps. - 2011-08-19 (1.6): Fixed an ACL permissions problem that could cause the generation of invalid IPAs on some computers. - 2011-05-22 (1.5): Automatic creation of .deb packages (Cydia) from compiled projects. - 2011-05-22 (1.5): Added the /s command-line flag to the PNG normalizer (idea: Per Andersson). - 2011-05-22 (1.5): Extension of the default Makefile rules in the project creation wizard. - 2011-05-16 (1.4): Automatic creation of IPA packages (app bundles) from compiled projects. - 2011-05-16 (1.4): Modified the build script to support project directory relocation (idea: Jonathan Garrett). - 2011-05-16 (1.4): Corrected a typographic bug in the project creation wizard. - 2011-05-16 (1.4): Installing your apps can now be done directly within iTunes. - 2011-05-10 (1.3): Added support for Visual Studio 2008, 2010 and Visual C++ Express as IDE. - 2011-05-10 (1.3): Basic Objective-C syntax colouring in Visual Studio (settable option). - 2011-05-10 (1.3): Added an iOS project creation wizard that creates Visual C++ (.vcproj) projects. - 2011-05-10 (1.3): Added a script that enables ARM compilation directly in Visual Studio. - 2011-01-06 (1.2): Complete refactoring of the headers tree (implying a substantial save in megabytes). - 2011-01-06 (1.2): Added back missing headers in some frameworks. - 2011-01-06 (1.2): Stripped the multi-architecture code from "fat" Mach-O binaries so as to keep only the ARM code. - 2011-01-06 (1.2): Created universal Makefiles. - 2011-01-06 (1.2): Added a PNG image normalizer to convert the Apple PNG files into standard images readable on a PC. - 2011-01-06 (1.2): Added a rotating OpenGL cube as a sample project. - 2011-01-06 (1.2): Added an elaborate 3D game (Wolfenstein 3D) as a sample project. - 2010-11-21 (1.1): Changed the default install path to avoid write permission problems in Program Files. - 2010-11-21 (1.1): Added the Preferences framework for the creation of applications that integrate themselves into iOS Settings. - 2010-11-21 (1.1): Replaced iCopyBot's PList editor with a non commercial version. - 2010-11-21 (1.1): Added basic and useful practical advices in the compiler prompt window. - 2010-11-21 (1.1): Initial release. - 2010-11-15 (1.0): Unpublished initial version (private use).