Beginning Multi-Platform App Development - What Language and Libraries?

chockomonkey

[H]F Junkie
Joined
Oct 11, 2003
Messages
8,328
I'm only a novice programmer. I have most experience with Python scripts and the Flask web app framework. I want to take some steps towards mobile and multi-platform app development.

Ideally I'd like to code in Python but be able to deploy to the Windows 10 Store, iOS, and Android.

Looking into Visual Studio 2015 and the Universal Windows Platform, it seems to me like there's a lot of stuff there that you wouldn't be able to get if you were using something like Kivy (a python cross-platform library).

What are you guys using for multi-platform app development, if anything? Would my time be better spent learning and targeting a single platform?

I'd love to hear from you more experienced devs. Trying to look into this stuff has got me quite overwhelmed... there's just SO many options, and I hate wasting what little time I have on dead-end endeavors.

Thanks all!
 
Last edited:
This winter I'm planning on trying to learn Android development with Xamarin, which uses C# + Mono libraries, and some other custom libraries and stuff they made available. The free version of Xamarin is limited in how big you can make your apps...otherwise it's a subscription based service.
 
This winter I'm planning on trying to learn Android development with Xamarin, which uses C# + Mono libraries, and some other custom libraries and stuff they made available. The free version of Xamarin is limited in how big you can make your apps...otherwise it's a subscription based service.

Do you already know C#? What considerations went into you choosing Xamarin?
 
Xamarin is pretty nice but the concept of "universal apps" is a bit flawed most of the time.

I've found a proper bootstrap type "web app" actually works better most of the time.
 
We use JavaScript for apps that are targeted to Android, iOS and Windows from inception. PhoneGap or Cordova make it easy to build for all major mobile platforms from a single code base. There is a performance hit from doing it this way, but the majority of major devices are so fast and full of RAM that it makes no difference anymore.

For cases where we need to leverage aspects of the device directly and cannot afford the performance hit, we develop directly in Swift on iOS and Java on Android using the official tools from each vendor.
 
Xamarin is pretty nice but the concept of "universal apps" is a bit flawed most of the time.

I've found a proper bootstrap type "web app" actually works better most of the time.

boy would i be in heaven if i could code python flask apps and port them to mobile platforms lol

Looking back into this cause a simple learning project came up. Think i'll play around with xamarin tonight.
 
We use JavaScript for apps that are targeted to Android, iOS and Windows from inception. PhoneGap or Cordova make it easy to build for all major mobile platforms from a single code base. There is a performance hit from doing it this way, but the majority of major devices are so fast and full of RAM that it makes no difference anymore.

For cases where we need to leverage aspects of the device directly and cannot afford the performance hit, we develop directly in Swift on iOS and Java on Android using the official tools from each vendor.

This is what we do, and we develop highly advanced and sophisticated apps
 
Last edited:
To clarify my question above: I'm currently just using sublime text 3 and cmd.exe on windows 7 for developing a python+flask web app.. is it similar for developing mobile apps with cordova? or is there some tool like Visual Studio which spiffs up the process?
 
To clarify my question above: I'm currently just using sublime text 3 and cmd.exe on windows 7 for developing a python+flask web app.. is it similar for developing mobile apps with cordova? or is there some tool like Visual Studio which spiffs up the process?

We use Cordova because we have our own build process in house that predates our development of mobile apps. If you're just getting started, you may find the other tools PhoneGap offers more convenient than rolling your own with Cordova.

You can use whatever editor you want for the code. Cordova doesn't provide an IDE or anything like that. If you like using Visual Studio, I've heard that Monaca's Visual Studio plugin is good, but have no experience using it.
 
We use Cordova because we have our own build process in house that predates our development of mobile apps. If you're just getting started, you may find the other tools PhoneGap offers more convenient than rolling your own with Cordova.

You can use whatever editor you want for the code. Cordova doesn't provide an IDE or anything like that. If you like using Visual Studio, I've heard that Monaca's Visual Studio plugin is good, but have no experience using it.

Ah okay, cool! Thank you.

After doing some research into things I'm currently torn.

I've narrowed it down to two paths--
1. Use existing knowledge of JS, HTML, and CSS. This would strengthen my knowledge of JS which would be helpful for projects I'm currently working on.
2. Begin learning C# and Xamarin. This would open up some possibilities in the game space.

Decisions decisions...
 
Your choice really depends on what you want to do. Corporate application development has heavily moved to C# over the past few years. Web based applications are still heavily JS/CSS based.

If you've never been exposed to C-style languages before, know that C# is significantly easier to start with.
 
My recommendation for this is to use the Ionic Framework (angularjs and cordova/phone gap). It is fast and pretty easy to get going. It works well and is easy to see progress. There are a lot of plugins you can use.

It comes with the usual browser quirks where something works right in Android but not iOS for example.

The only downside with Ionic is that you will not have native UI. This can be a deal breaker for some applications. Then you would want to use something like Xamarin - or develop native versions of the app for each platform. Cross platform development is still not straight forward, unfortunately.

To clarify my question above: I'm currently just using sublime text 3 and cmd.exe on windows 7 for developing a python+flask web app.. is it similar for developing mobile apps with cordova? or is there some tool like Visual Studio which spiffs up the process?

I use Atom and Chrome on Windows and Linux to make Ionic apps. Chrome has a nice feature in the debugger where you can attach the debugger to the app running on the phone so you can better see what is happening.
 
I'd say any JS framework. Angular/ionic, Vuejs, even Canjs. I recently completed an app using Meteor with Cordova.

For apps that need real time data and push, nothing beats meteor.

I'm a Ruby on Rails junkie too.
 
For mobile phones, for the android platform, I would learn java, and download android studio. The upside to learning java is that it there are many employment positions for java coders.

For embedded devices, C/C++ is the best language to learn.
 
My problem with the typical JS frameworks is that they use JS for the back-end (at least that's what i've seen), which just seems really weird to me since i've had so much time using python for the back-end and js for front-end scripting.

After going through all your suggestions towards the beginning of this year, i kinda went into option overload and ended up not doing anything in regards to mobile app development... :(

I'm curious though--since it's been a little while after Microsoft acquired Xamarin--has anyone been using it?
 
Yup.. off and on. I have a few friends using it full time. We all dig it.
I remember looking at it before the acquisition.. if i recall correctly, they had Xamarin.iOS and Xamarin.Android available for free but the real power was in Xamarin.Forms and that was locked away unless you paid.. Is this right? The whole thing is free now right?
 
A useful answer depends on whether the need is as a mental exercise, or for a specific reason. As a novice programmer, I assume this is just a mental exercise.

Generally, there are limited or several options for cross-platform compatibility depending on 1) what application domain, 2) language/run-time environments are acceptable and 3) language.

As a metaphor, you're asking the question from the trunk of a tree, where your specific need is a leaf that depends on choices as you traverse different branches representing application domain, implementation choices and platform decisions.

IMHO, better programming practices of separating out code dependent on implementation will make the application easier to port if you think it will be necessary at some later time. One-size fits all frameworks tend to look like crap and leave code far less useful than proper software architecture choices with portability in mind. My 2 cents is that if you want to learn programming on multiple platforms, just learn to program on multiple platforms. You'll be better off for it.
 
from everything i have seen there's not a true write once (in one language) run everywhere ecosystem
 
Would you explain that? By the nature of the devices and OSes the concept of cross-compile is born. Xamarin can be cross compiled across the major ones with little OS specific tweaking needed. There are always stumps in the way - like Macs still require you to have an actual Mac machine to compile/sign. Barring that folks rent mac VMs to use.

Xamarin Forms helps mitigate some cross compile issues, but just by the nature of the devices it helps to have the UIs be OS specific.

https://developer.xamarin.com/guide...mentals/building_cross_platform_applications/
 
JavaScript is the native language of web browsers, as well as back end servers using something like Node.js. Web browsers run on nearly every platform, and there is *very* little that native apps can do that web apps can't.

The biggest hurdle that you'll find with serious JS development is how to handle modules. Tools like Webpack can help with this, taking your pristine module-based ES6 JavaScript and bundling it to work in your browser and Node.

My suggestion would be vanilla JS for your business logic and domain models. Once your logic is working, add in the UI using the framework that best fits your needs, or just continue using vanilla JS.
 
Back
Top