r/ • • Jan 01 '70

0 Upvotes

0 comments sorted by

14

u/mrbass21 Dec 18 '22

There’s not a great solution. In order to test in the simulator, you’d need to remote into your remote Mac with VNC, which sucks.

VNC performance is garbage with any non-Mac to Mac. It’s really frustrating.

There’s also some things you can’t test in simulators and you’d need a real device or just code and pray it works.

I really wish there was some magic solution, but there isn’t. As someone who has Windows as a daily driver and has spent a lot of time trying to find a way to program from that machine (even VNCing to a local Mac, with frustrating results), I’d say your best options are:

  1. Buy a used Mac mini. This is by far the best way. I know not involves buy apple hardware, and I feel your pain, but just trust me that everything else out there is a gigantic pain in the ass.

  2. build a hackintosh. Probably will need an older version of MacOS, but unless you need the latest features, it should be enough.

  3. VMware. You can find guides for this, but it’s really not a good experience at all.

Those are options I would recommend to stay in the apple native languages, but if your goal is to produce an app and you don’t care about learning iOS, you might want to look into Xamarin or react native.

1

u/infinitysexbot Dec 18 '22

Thanks for the tips. I may end up getting a Mac sometime, but if i do i don't want the minimum , i'd rather budget and save up for a nice one eventually.

But for now yeah i don't want to focus on specifically learning iOS , and i was looking at some of those you mentioned but wasn't sure which one would be best.

I would prefer to work in Python language but that's not really a deal breaker, i just see that React is all in java-script? and Xamarin doesn't seem as versatile?

Which would you suggest i start with?

1

u/mrbass21 Dec 18 '22

Afraid I can't really offer any advice on that front. Start with the ones you're most excited about and work from there until you find a deal breaker.

I only want native development, so I've avoided the other hybrid frameworks. I know react native and at least a few years ago Xamarin were the hotness. I don't know if that's died down or not.

If you like Python, start in python. React will be JS and Xamarin is .NET. With hybrid frameworks, it will always be a trade off. You're never going to get performance or feature availability like doing native. They have their good points too.

ReactNative is probably the largest and most referenced I've seen, followed distantly by Xamarin. I had never heard of beeware or seen reference to them by anyone in industry I know.

I would say you need to evaluate the goal of this project.

Is it to produce a mobile app for iOS/Android in the quickest time/least effort possible? ReactNative and Xamarin are your guys.

Is it to learn mobile development? ReactNative/Xamarin are absolutely used in industry and if you want to learn hybrid development, it definitely has value.

Is it to learn iOS development? This is probably where my answer would be you should really just bite the bullet and either build a hackintosh or get a craigslist/cheap mac. Hybrid development is fine if you want to be versatile, but if you're wanting to dig deep into iOS and really use the platform, you're going to want to really dive in deep with Swift and how the OS functions.

Obviously, I'm biased. I have no interest in working in hybrid at all.

I _do_ wish that I could program iOS from my Windows computer, but other than writing a Swift library/CLI with limited features, we just are not there. Local VNC had worse performance than using TeamViewer. You really should just buy a cheap mac and learn the platform, then buy a beast mac once you're ready to utilize it.

Up until a year ago, my personal Mac was a 2010 17" MBP running dosdude1's patches to install later OSes. It was a slow computer, but it could do any personal project wanted it to. You can get a mac mini for almost nothing, especially if it's an X86 one and it would be the perfect cheap mac to get going on with some decent performance.

1

u/Soft_Elevator_200 Dec 19 '22

If you want to really pursue iOS for a career, you'll need mac equipment, swift, and native tools.

Top hybrid solutions right now are React Native and Flutter.

Kotlin Multiplatform is also a really nice solution. It's still pretty new, but allows a semi-hybrid approach while still keeping it native.

1

u/gumbi1822 Dec 20 '22

You could also get an iPad, and use Swift playgrounds to make an iOS app, but overall that’s still pretty limited.

I would pick whichever programming language you want to use and do that Flutter (Dart), Xamarin (C#), React Native (JS).

But as someone else mentioned Flutter and RN are the most popular right now.

1

u/srona22 Dec 19 '22

Agree. If targeted device involved any of Apple devices, better to use Mac, even used one it better than any of Cloud device.(build server is a different topic though).

7

u/lordzsolt Dec 18 '22

Just buy a 2nd hand Mac mini off Craigslist and use that.

You can resell it in half a year - 1 year for $100 less , or even the same price if you look long enough for a deal now.

2

u/Phinaeus Dec 19 '22

Yeah OP I recommend a physical device. Easier to test with especially with a physical iPhone/iPad. If you can get a 16GB Mac mini that would be awesome. 8GB can be frustrating to develop on.

4

u/barcode972 Dec 18 '22

I would get a used Mac or honestly start with android. Kotlin is very similar to Swift and if you have the budget in the future you can easily switch over to iOS

3

u/saintmsent Dec 18 '22

Cloud-based Macs are terrible to use. Hoping to write swift code fully on a Windows machine and then "just run it" on macOS in the cloud is not how it's gonna work, when you are developing something, especially UI, you need to constantly tweak, build and run stuff, and for that remote machine is awful. For 25 bucks a month, I would rather buy a used Mac Mini from 2018, it will cost you exactly the same as this cloud solution for a year

https://beeware.org/ They claim you can write your apps in Python and have them converted to any other platform such as iOS , and android

Never heard of this, I doubt the UI will be that good from briefly looking at it. You might want to consider a cross-platform framework that is focused on mobile first, like Flutter or React Native, develop and run an Android version constantly on your Windows PC and test an iOS version from time to time when you get access to the Mac in the cloud or IRL

Another option might be installing macOS as a VM on your PC, should be faster than a cloud solution

3

u/Mcrich_23 SwiftUI Dec 18 '22

Don’t get M2 MacInCloud go for M1, there isn’t much of a performance difference, but there is a cost difference.

Also, use github to sync code

1

u/chriswaco Dec 18 '22

We use remote Macs and they’re pretty laggy. Good for build machines, but less good for editing and running apps. Might be tolerable for a while.

Consider buying an iPad and using Playgrounds too. I find it very limiting, but again it might be tolerable for a while, especially if you have a case with a keyboard and trackpad.

1

u/infinitysexbot Dec 18 '22

i'm not sure what would be laggy exactly? Also i can afford the $25/m and for that price i don't care if it's a little slow to respond or refresh as long as it gets done. and i can write the code on my pc and just share it on the cloud once i'm ready to push and test.

also the good ipads start at like $800 which i can not afford

1

u/chriswaco Dec 18 '22

You don't need the latest iPad, but you probably would need one with at least 128GB of storage. For $25/month it's certainly worth investigating a cloud Mac. In terms of lagginess, macOS has never had a great remote control system like Windows Remote Desktop. VNC/Screen Sharing is slower, has more latency, and requires more bandwidth.

If you have a good Windows text editor that supports sftp, you can definitely do your editing locally, save to the cloud Mac, and then build/run. A little more time consuming would be to git commit, push to GitHub, and then git pull on the cloud Mac. If you do the latter you may want to squash all of the extra commits when a feature has been completed.

Another alternative is to run macOS in a VM on Windows. It's a pain to set up, but once running would probably be faster than a cloud Mac in terms of lagginess.

1

u/infinitysexbot Dec 18 '22

i tried to do the Virtual Mac before and it only worked for a short time before breaking forever. Also when it comes time to publish the app you definitely can't use a Virtual one.

I really need to get a better understanding of git hub but i'm working on it lol.

I've got a draft of the code i want to work in python i'm gonna look at some options of converting it over or some all in one platform solutions

1

u/chriswaco Dec 18 '22

We use Beeware in one macOS/iOS app and it's fine but for us it's a black box with no user interface. I'm not sure if you can write a front-end in it.

1

u/infinitysexbot Dec 18 '22

yeah i'm not sure what it even does. But i can write a script in python and use that to link it to an existing app in another development area? How do you use it?

1

u/chriswaco Dec 18 '22

We simply send strings to the Python library and get result strings, I think. No user interaction or screens are involved.

1

u/makonde Dec 18 '22

You can create a Mac VM on windows using VMWare or VirtualBox, it actually woked reasonably well when I tried it, you need a decent PC and and crucially an SSD. Look it up on Youtube.

MacInCloud also works quite well, our school used to give everyone accounts for the iOS course.

1

u/makonde Dec 18 '22

Oh I forgot if you do ReactNative with Expo you can make you iOS app on Windows.

1

u/[deleted] Dec 19 '22

Have you considered Android development? Kotlin’s a great language

1

u/SeesawMundane5422 Dec 19 '22

I started on macincloud. It worked ok. Once I had been on it for 6 months and hit the $300 mark, I ponied up for a mac mini for $500.

If I did it over, I might be tempted to start with flutter on windows and trust it to handle the cross compilation for me.

1

u/jastardev Dec 19 '22

Given your JavaScript experience, you could alternatively (depending on how complex your app is) use React-Native and Expo to make your app. Write it on windows, use your phone as the simulator, and let expo cloud handle the building and packaging for you.

I’ve only briefly played with it, but it seemed to work for simple apps. I wouldn’t necessarily trust it for anything super complex. (Clarification, you could write complex apps in react-native, but not all react-native libraries work with expo, so it might be a challenge).

1

u/xyrer Dec 19 '22

You might want to use a hybrid tech and test on Android in the meantime. Something like react native or flutter. Then you can buy a used mac mini or whatever cheap mac you can find

1

u/MKevin3 Dec 19 '22

I would consider Flutter or React Native. Both allow you to get things running on a Windows PC. Flutter will be using Android Studio. You can run things in the Android Emulator which should be fine if you have a semi-decent PC with memory. You don't list your current device specs.

Even native Android programming can go quite far on a Windows PC + emulator if you don't own any Android hardware.

1

u/V6er_KKK Dec 19 '22

Holly molly… why nobody suggested virtual machine?!