How do I go about building a mobile app?


#1

Hi there! I’m a C# web developer, using Visual Studio, but I’d like to learn mobile app development, just for fun. Does anyone have some favorite resources on how to get started? I’ve been reading the Apple and Android developer sites, but I’m looking for more general guidance.

I’d prefer to make an iOS app, because I use an iPhone, but I don’t have a Mac, so I don’t think that’s an option right now. Should I try Android app development, programming with Java or C++? I’m willing to learn Java, but I’d prefer C#, as that is what I use at work. (I’ve only been programming for a couple of years, so I’d like to practice C# in the process of building a mobile app.) I’ve heard of Xamarin, which claims it can be used for iOS, Android, and Windows, using Visual Studio, but it doesn’t seem to be a very popular option. Any opinions on Xamarin?

I’d appreciate your thoughts and advice on the subject. Thanks!


#2

I’ve probably tried and given up on Xamarin development six times over the years. The concept is sound and I’ve seen people do really cool things with it but there’s always some small thing about my development environment that prevents it from working quite right.

The last time I tried I was actually able to get everything just right and spin up a quick test app. Once you get your environment set up it’s pretty enjoyable to work with, especially if you’re already familiar with C#. The issue I ran into that time was simply one of disk space. The images used to emulate each of the Android devices can easily take up dozens of gigs of space and I just didn’t have that much available.

Alternatively there are quite a few javascript based solutions. I eventually settled on Ionic for mobile development at work. If you’re familiar with front end frameworks like Angular you should be able to pick it up pretty quickly. They have some well done tutorials that take you through the basics. Within a few hours I was able to get an app running on my phone that queried and displayed results from a WebAPI I’d written for an internal web form.


#3

I should add that most of the issues I encountered setting up my environment had to do with getting everything just right for all the Android stuff to work properly and had very little to do with Xamarin.


#4

Since you don’t have a Mac you will be limited to Android, at the moment, but there are other options that may be easier for you, since you know C#, besides Xamarin.

First, what type of application do you want to write? Is it a game? Then check out Unity3D (https://unity3d.com). I use Unity for doing VR work and it is an easier way to do games or graphic intensive applications.

Xamarin is good, I tend to look at their documentation on new features in Android and iOS, and the advantage of doing this in Xamarin is to split your code into what is shareable and what is platform dependent. Then, later, if you get a Mac you can easily add a new platform.

Later you may want to move away from Xamarin, but you can write your app and deploy it without requiring learning a new language.


#5

I’d encourage you to take a look at Google’s new mobile dev framework, Flutter. I’ve only done a tiny bit of looking at it so far but it is really promising and it could get you going more quickly than most other options. React Native is also worth a look, but Flutter has some terrific tooling and a growing community too. Good luck and have fun!


#6

This actually changed last year. There is no longer a requirement for a mac to do iOS development with Xamarin. From my understanding, it was never a technical problem, but one of licensing. Either way, you can now use Windows and develop and test iOS apps without any issue.


#7

I agree! As a “Flutter” dev myself I think there are some really cool things going on. But since @Lindzee knows C#, it might be a great use of her existing skill set on Xamarin.