XTool – Cross-platform Xcode replacement
195 points by TheWiggles 1 month ago | 66 comments- lwouis 1 month agoThis 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.
- rockbruno 1 month agoI 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.
- kabiroberai 1 month agoxtool 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).
- lwouis 1 month agoI've been developing a fairly popular macOS app for years. I consider myself in the community for that reason.
Apple has bundled everything together in a big mess.
- Only certain macOS versions can run certain XCode versions
- Only certain XCode versions contain certain SDK versions
- XCode embeds "Command line tools" which contains things like gcc, ruby, python, installed as a package, and conflicting with other versions on the machine
- Interface Builder is built into XCode and has its own compatibility story
It's a big messy blob and you can't pick-and-choose parts. You have to update your whole machine to move to the latest OS so they will let you run the latest XCode, so your app can compile on the latest platform for your users. It's not the best experience for sure. Many ecosystems have SDKs that you can download as you wish. I don't need to update my OS to download a version of the JDK for example.
That being all said, if you require users to download XCode, regardless of which part of it is necessary, i don't think you should mention "XCode free experience" or "XCode replacement".
I'm already developing a macOS app without launching the XCode GUI. I use the xcodebuild CLI that ships with XCode. My IDE is AppCode. I also use xcodebuild on CI to build the app headless. I would never call that a XCode free experience though, as i suffer from all the issues i mentionned above with version upgrades and XCode issues
- rushiiMachine 1 month agoI'm not too familiar with the xcode dev environment; could Theos be used instead of the huge xcode bundle? As far as I know, it provides the compilers and frameworks directly.
- lwouis 1 month ago
- notpushkin 1 month agoWould 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.
- kabiroberai 1 month agoI looked into streaming but afaict the XIP format doesn’t support random access the same way that ZIP does. specifically because 1) it doesn’t seem to have a Central Directory like ZIP and 2) it has an optimization where files can be hardlinks to other files (by ID) in the XIP, so if you want to extract a file but all you get is a hardlink ID, you can’t expand the contents until you encounter and expand the hardlink pointee. it’s possible I’ve missed something, open to ideas for sure.
- isodev 1 month agoThere are some components that may be downloadable separately but they really are part of Xcode. One ring to rule them all.
- kabiroberai 1 month ago
- ImPostingOnHN 1 month agoIt sounds like this "cross-platform xcode replacement" isn't cross-platform, and ios app developers still need macos?
- dadoum 1 month agoBut that's wrong. You don't need macOS. That's why they say "cross-platform Xcode replacement". You just need the SDK, which can be used on every platform.
- dadoum 1 month ago
- kabiroberai 1 month ago
- rockbruno 1 month ago
- firecall 1 month agoJetBrains used to develop AppCode:
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/
- lwouis 1 month agoIt 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
- Larrikin 1 month agoFleet will also most likely get abandoned as people who pay for an IDE highly prefer the older one and people who want VSCode use VSCode
I also think any revival of AppCode is also dead as JetBrains is all in on Kotlin everywhere. iOS multiplatform support hit stable recently.
- BrandonSmith 1 month agoJetBrains already announced it is no longer targeting Fleet as its iOS strategy for Kotlin Multiplatform. Instead it will be realizing its strategy through IntelliJ IDEA and Android Studio.
- BrandonSmith 1 month ago
- sandebert 1 month agoWhat's Fleet?
- tomcam 1 month ago
- tomcam 1 month ago
- Larrikin 1 month ago
- mdaniel 1 month agoIt likely doesn't help the ObjC part of that story, but they moved the Swift part out into a CLion plugin https://plugins.jetbrains.com/plugin/8240-swift
Regrettably I didn't see that they did anything with the ObjC part, choosing to /dev/null it
- Due_Winter_5330 1 month agoObjective-C has been supported in Clion for years: https://www.jetbrains.com/help/clion/objective-c-c-support.h...
- pharaohgeek 1 month agoUnfortunately, 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.
- Due_Winter_5330 1 month ago
- lwouis 1 month ago
- flax 1 month agoWould this theoretically allow a Flutter app developer to build and deploy an ios app from Linux? God, I hope so.
- candiddevmike 1 month agoIt technically violates the Apple Developer Agreement AFAIK, but that seems like yet another lawsuit waiting to happen IMO.
- ronsor 1 month agoApple won't do anything right now as they're certainly afraid the courts* will slap them hard.
*Both US and EU now
- saagarjha 1 month agoThey’re still rejecting Fortnite so I don’t think they’re particularly scared of anything
- saagarjha 1 month ago
- petabyt 1 month agoPeople have been doing hackintoshes and macos VMs for years... And apple hasn't really done anything. So I doubt this tool will provoke them.
- karlgkk 1 month agoA long while ago, they put some company selling hackintoshes straight into the ground. Nobody tried since
- conception 1 month agoApple has killed the Hackintosh…. It’s just bleeding out still.
- karlgkk 1 month ago
- _blk 1 month agoYeah 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? ;)
- freeamz 1 month agoSame thing with the bank bail out, if Bush did oh my we will never hear end of it, but if cool president who smokes weed and get down some good music, then no one really call him out on it.
- freeamz 1 month ago
- notpushkin 1 month agoI believe it allows usage on “Apple-branded computers”, so building iOS apps with xtool on Asahi is probably legit.
But yeah, I would probably use this for testing only, and do actual releases from macOS proper.
- tgma 1 month agoIIRC it is only a potential issue if the host machine isn't made by Apple. You can install Linux on a Mac and use this.
IANAL yada yada.
- nar001 1 month agoDoes it? You still need to install Xcode for the iOS SDK, so they're not really doing anything wrong?
- ronsor 1 month ago
- loic-sharma 1 month agoThis project helps but isn’t enough alone:
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.
- Cloudef 1 month agoAfaik its already possible with darling. Nixpkgs also has xcbuild replacement, but not sure if it can handle codesigning.
- gman83 1 month agoJust use something like CodeMagic, I wouldn't risk getting your Apple account banned.
- candiddevmike 1 month ago
- zh3 1 month agoAlso https://forums.swift.org/t/xtool-cross-platform-xcode-replac... (and HN discussion https://news.ycombinator.com/item?id=43952239).
- awinter-py 1 month agoxcode, the tool that takes 9 hours to download every few months and makes random edits to my XML and plist files? that xcode?
- novoreorx 1 month agoReminds 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!
- novoreorx 1 month agoAlso it shares something in common with XcodeGen (https://github.com/yonaskolb/XcodeGen), especially on using a yaml format to define the project's information
- novoreorx 1 month ago
- walterbell 1 month agoEarlier, "Build iOS Apps on Linux and Windows", https://news.ycombinator.com/item?id=43952239
- bdcravens 1 month agoI see the Github org is "xtool-org". I wonder if XTool the company (makes laser engravers and other creative/crafting tech) will take issue.
- jasau 1 month agoWould be cool to have similar tooling (de-attached from XCode) for live previewing interfaces built with Swift UI.
- waynecochran 1 month agoThe screenshot has a vscode icon?
- bdcravens 1 month agoYes, because the tool itself is just a command line app, replacing the build tools, but not the IDE. You edit the code in your tool of choice.
- bdcravens 1 month ago
- pjmlp 1 month agoMore likely a command line xcodebuild replacement.
- woleium 1 month agono android support?
- landr0id 1 month ago...this is for building apps targeting iOS and macOS on non-macOS platforms. Why would Android support be necessary?
- 1 month ago
- landr0id 1 month ago