
It seems the title of the previous post in this series threw a few people. I suppose it serves me right for flirting with a click baity title. The point I was attempting to make was that though mobile app development has a lot of allure as a road to fame and riches, the reality is much starker for most aspiring app developers and entrepreneurs. Nevertheless, it’s still a rewarding career path with challenging work and attractive salaries, so if you’re ready, let’s take a deeper dive into getting started with mobile app development.As discussed in the previous post in this series, there are a variety of app development platforms along with app types. For this post, we'll just focus on native app development and leave the online app creation platforms to the "get quick rich" types. That leaves Apple iOS, Android, and Windows 10 Mobile for consideration. We’ll set Windows 10 Mobile aside since Microsoft has conceded the commercial app arena to Apple and Android, but it’s still worth looking into further in a future post. That leaves only Apple's iOS and Google's Android mobile OSes.
Apple iOSBeyond signing up for an Apple App Store subscription, you’re going to need to set yourself up with a development platform for creating iOS apps. Like all mobile app development platforms, iOS is based upon a framework consisting of a multitude of Software Development Kits (SDKs). An SDK is a code library that provides a specific set of functionality for interacting with the underlying device hardware, in this case, mobile devices including iPhone, iPad, iTV, and iWatch.Oftentimes, as is the case with desktop systems, you have a range of programming languages to choose from for interfacing with the SDKs. For Apple iOS, you had only one programming language to choose from for many years: Objective-C. That was until recently when Apple introduced another way to code iOS apps using the Swift language.My pet peeve with Apple going all the way back to the debut of the first Mac is the closed nature of their systems. Apple began to break out of this restriction with the introduction of OSx on the desktop and now this is the case with Swift for iOS development. Both are open source projects, which are always nice, but you’re still going to need to invest in a Mac computer of some type and vintage in order to code iOS apps. No Parallels for you!A common question when it comes to iOS development is should I learn Objective-C or Swift? Unfortunately, the answer is both since Objective-C is has been around a lot longer and there are a whole lot of legacy apps programmed in Object-C. But if you’re just starting out, then by all means, begin by learning Swift. It’s a much easier language to learn and it’s also safer (more secure). You can then backfill by picking up Objective-C. You can find a wealth of information on iOS development along with tutorials on the
Apple Developers’ site and downloads for the Xcode IDE and the Swift Playgrounds iPad IDE app.
Google AndroidGoogle’s mobile operating system has come a long way in a short period of time. Nine out of ten smartphones in the world today run Android. How’s that for market share? Android has also expanded to include wearables, TV (Chromecast), and the Internet of Things (IoT). And if that's not enough, Amazon’s Kindle and TV platforms also run a flavor of Android. There is no shortage of devices to target for your mobile apps with Android.Known for its distinctive dessert-oriented naming convention for OS versions – cupcake, gingerbread, Froyo, and lollipop to name just a few – Android is a versatile open-source mobile OS. What’s even better is it’s relatively easy to jump in and get started programming Android mobile apps. Android uses Java as its primary app programming language. For hardcore, low-level Android programming you’ll need to switch to C in order to program the Android Native Development Kit (NDK), but it’s rare that you’ll ever need to get this down and dirty with the hardware. The cross-platform development platform, Xamarin, which supports Android, iOS and Windows Mobile uses C#, but it’s not that common.The original Integrated Development Environment (IDE) for Android was the open source Eclipse project. Eclipse was and continues to be a popular IDE for Java app development, but Google has been nudging developers to its Android Studio IDE for the past several years and now uses it exclusively. You can download Android Studio and the Android SDK at
Google’s Android Developer site. There’s also a wealth of tutorials and references to facilitate you’re learning up there.
Hybrid Mobile App Development FrameworksThe Holy Grail of mobile app development is the concept of write once, run everywhere. It can get downright costly to development at least two separate native versions of your app. This is why you run across a lot of popular apps that are only available in a single flavor – either iOS or Android. It just costs too much to have two sets of mobile development teams on staff. Unfortunately, the development platforms touting cross-platform development often leave users disappointed for one reason or another.The two most popular are what are known as
hybrid platforms and Xamarin. There are quite a few hybrid mobile app development platform with many having evolved or are based on
Apache Cordova, formerly known as PhoneGap. These platforms use a combination of HTML5, CSS3, and JavaScript for the UI portion of the app much like a web page. Interfacing with the underlying device hardware is via the APIs provided by the mobile SDKs – sort of the best of both worlds.The reusable part is the UI portion, which can save considerable development time, but it still requires coding up separate apps for each mobile OS. There are other compromises such as the need to have developers conversant in web technologies such as HTML, CSS, and JavaScript, the somewhat wonkiness of the UI since it’s not natively coded, and some minor performance tradeoffs.
Xamarin had the greatest promise for cross-platform development, but it still requires separately coded apps with device-dependent layers. It also produces a larger executable file and can confuse developers already familiar with coding native apps since they're no longer communicating directly with the Android SDK. Converting .Net developers to mobile app developers is the better course of action when considering Xamarin.
Android It Is!If you’re an Android fan, then you’re in luck. My only experience with mobile app development is on the Android platform, so that’s what I’ll be targeting in upcoming posts on getting started with mobile development, however, I encourage you to poke around on the Apple Developers’ site and get a feel for iOS development. You will need a Mac computer of some sort, but it doesn’t need to be the latest and greatest. You can purchase a used MacBook from eBay or sites dedicated to used Mac hardware for a reasonable price and they are perfectly suitable for iOS development and publishing.I’ll leave you with a career tip regarding mobile app development: if you’re going to learn a development platform then I recommend getting started with Android. You can use any desktop OS from Windows to OSx to Linux. Java is relatively easy to learn and the basics of Android aren’t too difficult. Android does get confusing when going beyond the basics, but like anything else in tech, it can be mastered with time and effort.