End-To-End iOS application development without a Mac.

As a mobile developer, you cannot afford working only in one platform, If you want your application to reach large audience you will need to have your application in both Google store (For Android users) and in the AppStore (For iPhone users) many development tools and environment allow to create a cross platform applications (React Native and Flutter are just two examples) 

All is well , you build your app, and test it in the IDE but then you need to actually publish it.

Apple users have no problem whatsoever, but when it comes to Windows/Linux users, it is more complicated, to compile your application and to upload it to the Apple AppStore, you need XCode!

and this is exactly where most developers are stuck:

“Do I really need to buy a $3000US Mac to upload my app?”

“Should I rent a virtual Mac in the cloud?”

Well, I have a better solution for you, run it as a virtual machine on your PC!

Most of the advanced computer users today are running some kind of Virtual machine on there computer , whether they know it or not.

  • An Emulator or Simulator of a mobile phone for a development environment is a kind of Virtual Machine.
  • Docker or K8’s containers are actually virtual machine , though much more sophisticated.
  • Where is many types of Virtual Machines , some are even built-in in Windows 10, Hyper-V engine allows to run the integrated Linux core.
  • Even the well known Sandbox is a kind of virtual based snapshot based environment running under your operating system.

But when speaking about easy to deploy Virtual environment for you PC, you will probably hear people speaking about:

  • Oracle’s Virtual Box
  • VMware Workstation / Fusion.

I personally prefer VMware Workstation because of the flexibility and the ability to connect and “Transfer” everything from the PC (the Host) to the Virtual machine.

As a mobile developer, I have decided to try to install a Mac virtual machine, Its not a very complicated procedure and after few struggles few upgrades ( I initially installed the 10.15.2 / xCode 11.2 , I have managed to install Mac OS 10.15.5 and Catalina as a virtual machine on my PC.

Stay tuned, a full tutorial will be added soon

Mac inside Widows 10
Mac OS 10.15.5 (Catalina)

Note: Mac OS, by definition has high hardware demands, to work smoothly, you will need:

  • At least 2 cores of Core i7 Processor.
  • At least 8 GB of RAM
  • Around 100GB of storage , preferably SSD (NVME highly suggested).

some make sure that your PC have the resources to give to the virtual machine.

Back to square one, we want to allow compile and upload of the application we have built elsewhere to the App-Store.

xCode is downloaded free from the Mac App-Store (with your Apple ID) and you can test your up with a simulator.

To publish the app to AppStore you will need an Apple developer account ($99US a year).

But funnily, the biggest problem I had in this process is actually connecting my physical iPhone to the xCode in the virtual machine.

Everywhere I looked for , they say you should just share it in the VM settings, and attach it to the virtual machine, but in my case , it was just not working!

So After deep investigation of the Virtual machine preferences I have figure out something (quite strange I must admit)

An iPhone will not appear in the Virtual Mac if the settings are the default.

For some strange reason I cannot understand , as long as the USB type is 3.0 (the default version in a virtual machine) – the device will not appear in the list of available USB devices possible to attach to the Virtual machine,

And The solution, simply to change it to USB V2.0!!

VMware workstation settings to change the USB settings

If, for some reason, you would like to run Android Simulator (i.e. for Cross platform development) you will need to enable Virtual Intel VT-x processor enhancement, as described in the image below

Can you imagine the surprise I had when suddenly the device (from the Host), appeared at the doorstep of the virtual machine , asking to enter.

So, before it retreats, I connected it , ran my xCode, and there it was, my iPhone was in the list of the devices to build the application with.

The sign of the USB connection to the Virtual machine
my iPhone in xCode on the Virtual Mac.

Update (Aug 12,2021): If your physical device shows an error in XCode “Unsupported OS Version” or not connecting to other IDEs (like Android Studio), refer to the MacOS / XCode / iOS Co-Existence post describing the way to overcome incompatibility problems.

And now I can proudly say , my applications , built with Flutter, are running not only on my Android devices , but installed on my iPhone , and soon to be uploaded to the AppStore.

Any comments will be appreciated.

15 Comments

  1. Sender Name Undisclosed on January 11, 2021 at 10:33 pm

    Im not positive where you are getting your information, but great topic. I needs to spend some time learning much more or working out more.

  2. Sender Name Undisclosed on January 29, 2021 at 3:26 pm

    Useful info. Lucky me I discovered your site unintentionally, and I am stunned why this twist of fate did not happened in advance! I bookmarked it.

  3. Sender Name Undisclosed on January 30, 2021 at 5:59 pm

    After study just a few of the blog posts in your web site now, and I really like your method of blogging. I bookmarked it to my bookmark web site checklist and might be checking again soon. Pls check out my web page as effectively and let me know what you think.

  4. Sender Name Undisclosed on February 6, 2021 at 1:07 pm

    Thanks for sharing superb informations. Your web site is very cool. I am impressed by the details that you have on this web site. It reveals how nicely you understand this subject. Bookmarked this web page, will come back for extra articles. You, my pal, ROCK! I found just the info I already searched everywhere and simply could not come across. What an ideal website.

  5. Sender Name Undisclosed on February 7, 2021 at 3:30 am

    You should take part in a contest for one of the best websites on the internet. I will highly recommend this website!

  6. Sender Name Undisclosed on February 7, 2021 at 8:34 am

    If you wish for to grow your familiarity simply keep visiting this web page and be updated with the most up-to-date news posted here.

  7. Sender Name Undisclosed on February 7, 2021 at 9:31 am

    Fabulous, what a blog it is! This blog gives helpful facts to us, keep it up.

  8. Sender Name Undisclosed on February 7, 2021 at 11:22 am

    I think this is among the most important information for me. And i am glad reading your article. But wanna remark on some general things, The site style is wonderful, the articles is really excellent : D. Good job, cheers

  9. Sender Name Undisclosed on February 7, 2021 at 3:25 pm

    Howdy! I simply want to give you a big thumbs up for the excellent information you have got right here on this post. I will be returning to your blog for more soon.

  10. Sender Name Undisclosed on February 7, 2021 at 4:40 pm

    Good article! We are linking to this particularly great post on our site. Keep up the good writing.

  11. Sender Name Undisclosed on February 10, 2021 at 4:12 am

    Hello! I just would like to offer you a huge thumbs up for your great info you have right here on this post. I will be returning to your web site for more soon.

  12. Sender Name Undisclosed on February 10, 2021 at 11:58 am

    Howdy terrific blog! Does running a blog similar to this take a massive amount work?

  13. Sender Name Undisclosed on February 10, 2021 at 1:48 pm

    Wow, great blog article. Really thank you! Really Great.

  14. Sender Name Undisclosed on February 10, 2021 at 3:03 pm

    You made some respectable factors there. I looked on the internet for the difficulty and found most individuals will go together with together with your website.

  15. Sender Name Undisclosed on February 10, 2021 at 4:32 pm

    Awesome blog post. Really looking forward to read more. Great.

Leave a comment

You must be logged in to post a comment.