This tool says "Xcode replacement" and "Xcode-free development". I thought there is no way they can build apps without Xcode. How would they replicate the libraries, compilers, etc.
I dug more and of course they don't: "Though we don’t rely on the Xcode build system, you still need to install Xcode for the iOS SDK and toolchain"
I think they should clarify their messaging. This is not a replacement or an alternative. It's a layer on top designed for what they think is a better experience.
I think you are mixing some different concepts here. It's not that this is a layer on top of Xcode/xcodebuild, it's just that Apple today happens to package everything iOS/Swift-related together with Xcode releases. So even if you couldn't care less about the Xcode IDE itself or the xcodebuild build system, you still need to have it because this is the only way for you to download / install those toolchains. Apple could provide these separately, but they just don't.
xtool creator here, this is correct. it wouldn’t have been possible to support Linux if xtool was just a layer on top of Xcode, as Xcode doesn’t run on Linux.
we only need Xcode to be installed on macOS since it bundles the iOS SDK (ie all the header files.) similarly, we ask the user to supply a copy of Xcode.xip during the setup process on Linux in order to extract the SDK.
it definitely depends on your definition of “replacement” in the end, but I (and most people I’ve spoken with in the iOS community) would consider “Xcode” to be the Xcode build system, user interface, and proprietary tooling. xtool doesn’t rely on any of this, not even for signing and installation. you can (read: must on Linux, may on macOS) use it with the open-source Swift and Clang toolchain + LLVM’s LLD linker and MachO tooling. Codesigning uses zsign, an MIT-licensed x-platform codesign alternative, and installation relies on the open source libimobiledevice project, which is installed by default on many Linux distributions (eg Ubuntu).
Would it be possible to get just the SDK from the Xcode package? Like Asahi installer streams only the relevant parts of macOS images from Apple’s servers.
AppCode
A smart IDE for iOS/macOS development
AppCode is no longer available as a commercial product as of December 14, 2022.
https://www.jetbrains.com/objc/
It seems that Fleet will support building XCode apps. It looks like a big regression from AppCode. As of today Fleet doesn't compile my macOS app. I try regularly on new updates. No alternatives, unfortunately
Unfortunately, even that isn't supported any longer. I do a lot of server-side Swift development and would LOVE to be able to ditch Xcode for CLion and the Swift plugin.
Yeah weird world. When Gates bundles IE that no one wants it's an abuse of power but when Jobs shoves his apples down your throat just to (try to) publish for their platform it's all OK.. Oh, or was that the lawsuit waiting to happen? ;)
1. Dart can’t cross-compile from Linux to iOS yet. You could use Dart’s interpreter instead, but that’d significantly regress performance.
2. Flutter iOS projects use the Xcode project format, you’d need to migrate that to xtool’s project format
3. Flutter hasn’t finished migrating its plugin ecosystem from CocoaPods to SwiftPM - any plugin that hasn’t migrated to SwiftPM yet likely won’t work with xtool.
Reminds me of Sweetpad (https://sweetpad.hyzyla.dev/), which is a bit tedious to setup, XTool seems to provide a better DX, huge wish for this project to grow!
Also it shares something in common with XcodeGen (https://github.com/yonaskolb/XcodeGen), especially on using a yaml format to define the project's information
I dug more and of course they don't: "Though we don’t rely on the Xcode build system, you still need to install Xcode for the iOS SDK and toolchain"
I think they should clarify their messaging. This is not a replacement or an alternative. It's a layer on top designed for what they think is a better experience.
we only need Xcode to be installed on macOS since it bundles the iOS SDK (ie all the header files.) similarly, we ask the user to supply a copy of Xcode.xip during the setup process on Linux in order to extract the SDK.
it definitely depends on your definition of “replacement” in the end, but I (and most people I’ve spoken with in the iOS community) would consider “Xcode” to be the Xcode build system, user interface, and proprietary tooling. xtool doesn’t rely on any of this, not even for signing and installation. you can (read: must on Linux, may on macOS) use it with the open-source Swift and Clang toolchain + LLVM’s LLD linker and MachO tooling. Codesigning uses zsign, an MIT-licensed x-platform codesign alternative, and installation relies on the open source libimobiledevice project, which is installed by default on many Linux distributions (eg Ubuntu).
I also think any revival of AppCode is also dead as JetBrains is all in on Kotlin everywhere. iOS multiplatform support hit stable recently.
Regrettably I didn't see that they did anything with the ObjC part, choosing to /dev/null it
*Both US and EU now
But yeah, I would probably use this for testing only, and do actual releases from macOS proper.
IANAL yada yada.
1. Dart can’t cross-compile from Linux to iOS yet. You could use Dart’s interpreter instead, but that’d significantly regress performance.
2. Flutter iOS projects use the Xcode project format, you’d need to migrate that to xtool’s project format
3. Flutter hasn’t finished migrating its plugin ecosystem from CocoaPods to SwiftPM - any plugin that hasn’t migrated to SwiftPM yet likely won’t work with xtool.