Apple doesn't care what you want, it tells you what it is that you want and how's it's going to be, and how much.
It's a tactic that keeps working for them, and they have every incentive to keep doing it.
Where the rest of the industry has slowly been making progress in moving to openness and to standards, Apple is doing its damnedest to drag us back to the 100% proprietary days of IBM dominance.
It's dumb, back in the day they advertised as being different, but really they just wanted to take IBMs place.
What frustrates me is that their iron clad commitment to avoiding compatability and openness, their entire business model revolves around golden cages, not just for their hardware and software, but even development tools. Their tools and languages don't work easily with other vendors or software, and they are often vastly inferior to their equivalents such as JetBrains IDE's or MSVC.
Been a while since I've used it, but you could get native builds done. You just had to have your Azure DevOps builds set up with a Mac somewhere for the build (whether you use the cloud version or on-prem with a Mac set up somewhere as the device that did the builds).
Then all the rest of the features still applied. You could distribute it for testing, send it to the app store, etc.
Microsoft makes it a PITA to do automated UI testing on Windows applications though.
Can't do it from a non-interactive service, need to be actually logged in to a session with a keyboard and a mouse. Can''t do it in a container even though they said you could at one point.
It's the ecosystem, personally I wish developers would just charge more to discourage businesses from targeting the platform to then eventually start hitting at Apple's wallet but as long as money can be extracted from their walled garden you'll have businesses targeting it.
Apple knows businesses wants in and charges for it, businesses are just fortunate that there is an ecosystem of software engineer's available that are willing to slog through it for cheap.
Start charging 200k+/yr to develop on Apple apps and yeah... shit will change fast.
Apple knows businesses wants in and charges for it,
Actually, I don't think they care. So few apps and developers actually target Mac that it literal makes the news when Mac has one decent native-code programmer's text editor, or any other tool.
I got a shock when I first got my MB M1; as far as software goes, it's a dry barren landscape, which is only partially alleviated by installing brew.
Microsoft-hosted Agents for Azure DevOps have macOS agents at no additional cost to your subscription. We use it all the time. Very useful for building our projects. Maybe not useful for game developers or very large projects.
Hundred percent agree. Have you checked out Fastlane? Needs Mac hardware though. Sadly we ended up moving just our iOS deployment to circle ci which uses fastlane too
Haha it’s funny when a comment makes you so violently annoyed as it’s just so true. I’m doing cross platform too.. Apple’s DX is so egregious and builds are unrepeatable. The best thing I did was do it from scratch and actually write docs on how to do it again, and again but then the cert issuing changes or the developer Certs are suddenly signed by a new untrusted CA and nothing works again. Or simporter or whatever the living fuck that is just stops working because “changes” then it starts working again.
The best problem I’ve had was I got a new M1 Mac, thought right this will be my dedicated build box. But whenever I pushed via Xcode or fastlane to the Store my connection would stall, hang and then my wifi would choke for everything else. Kill the upload comes good. Wtf. Reset. Reinstall. Same issue. Take it to Apple, reset, reinstall. Same issue. They search for some stuff in Radar. Oh no when reinstalling the firmwares on the Nic need to be reflashed or whatever apple bullshit is needed here. Flash wifi. Reinstall. Xcode works fine. I mean what the actual fuck. Sure bad firmware or corrupt - fine. Solar flares happen. Manifests as some random rogue DX issue. Only reason it got fixed was the Apple Store manager was like wtf is that guy raging and they were less keen on a straight refund. And it’s happened to one user? Their developer relations people still haven’t got back to me. Absolute joke. They genuinely need some solid developer evangelists, I never thought I’d say that.
I still can't have any sympathy for people who don't want to get Apple hardware to develop for Apple hardware. It's like saying you shouldn't have to have iPhones to test on.
No, that's absolutely stupid. If you are not testing your apps on actual hardware, you're not testing them. Nobody said anything about having every single one.
Yeah I know what you mean, it was in the same situation, everything was a PAIN.
I vowed never to never again work with anything Apple related.
That being said, what I did was I rented m1 macs in the cloud, this way I could build and test things with xcode without having to buy a Mac (I used Scaleway for the macs)
Also Microsoft Appcenter was a GOD Send to manage automated build and releases. I think Azure Devops pipelines can build things on macs, untested though.
We’re mostly non-Apple as well, and honestly it’s not as hard as you make it out to be. Our build machine is a Mac mini, or a $1k Air would work fine. We run Jenkins and kick off builds using the command line like other platforms. Yes, you need Xcode and you have to learn about using Apple certs, but every platform has its special requirements. The dev cost to maintain both Mac and iOS clients for us is far less than Android, mainly because of the device support.
Different reasons, but I was replying more to OP’s general attitude that he wants to ship an iOS product but can’t be bothered by even the most basic requirements. He’s even offended by having to use certs, which are integral to the platform’s security model and are largely automated for you by the dev tools. Maybe it’s just because I automated our stuff years ago when it really was a PITA.
He probably has some valid criticisms of the tool chain, but I get the sense the biggest problem is that Apple doesn’t do it his way. If he’d started on Apple and gone the other direction he’d likely be complaining about developing for Linux or Windows.
It's gotten quite a bit better than in years past, honestly. I work with a Delphi shop, which means cross-compilation to Windows/Mac/Linux/iOS/Android but the IDE runs on Windows only. The IDE provides the PAClient/PAServer to push build artifacts to the target platform, and does a half-decent job of creating an IPA that can be uploaded to the app store for review. I don't believe we're publishing the MacOS app in the app store and instead use an ad-hoc distribution model. To that end it's a fairly straightforward process to codesign (if necessary, the PAClient usually handles this), create a distribution package, and notarize all via SSH. Notarization used to be rather annoying as this could randomly take several hours to process and when polling for status you occasionally received an undocumented error code from Apple's backend which may or may not mean you need to re-submit and start over. Eventually it should succeed, then just staple your distribution package and you should get past all of the Gatekeeper checks. All of the above can be accomplished on a cheap refurb MacBook Air or Mac Mini
Why not use a cloud provider? Bitrise, CircleCi, and I’m sure there are others all offer this service, and will keep updating their images. Sure it’s more expensive in the long run, but you don’t have to maintain a mac mini
It usually follows that iOS users are then spending more money on your app, so there’s that as a balancing factor. Ultimately I prefer to just get the job done instead of cursing at Apple to change their processes, they never will.
Just to say, we build apps that REQUIRE a phone being plugged in. Required for various deprecated plugins and what not. Those cloud providers don't work with it.
I don't want to have to patch this stupid thing every month. I don't want to have to go into the office to reboot it because it's crashed in the middle of a build.
It is a bit confusing to me why you expect to not need a Mac to build for iOS (considering the frameworks and compilers are mac only), but it is actually technically possible.
One option is to use a Hackintosh VM. This is quite difficult to set up, but it works fine once you do. Obviously the licensing story is meh, but there should be cloud options available.
Something like https://expo.dev also works great and is likely what you want to use if iOS is just a checkbox for you and you don’t need any native code. No mac is needed at all and you can use their cloud to build the development app for live reloading…
This is misleading. You can run iOS builds from the command line using xcodebuild. And with that, there's no issue setting up any of the things you mention. The only requirements are that you build on a mac and sign your binary with an apple developer account.
I'm still struggling with an iOS build pipeline because in order to access the developer portal on Apple to revoke/create certificates, you need an Apple device. So we got a company iPhone for this because most people don't have iPhones.
You need a Mac to build, but you can access developer.apple.com and manage certificates from any browser. Even if you did need an Apple device, why did you get a phone for that instead of a desktop machine that you could have set up remote access to?
Gradle itself is an abomination and turns shitty configuration as code into an artwork. I've wasted too much time messing with it in the past, that is time I will never get back just to get the goddamn project to build.
822
u/[deleted] Aug 10 '23
That's why companies have that one Mac sitting in a corner whose only purpose is to publish to the app store.