Mastering Mobile Application Development - 2nd Edition
Minimum price
Suggested price

Mastering Mobile Application Development - 2nd Edition

Learning iOS and Android Side-By-Side

About the Book

This is an updated 2nd Edition of the previous version of the book. We've completely rewritten the book, and refreshed all code examples using the latest versions of Xcode/iOS and Android Studio. In addition, on the Android material, we've replaced the Java language with Kotlin! This book offers developers an in depth tour of these two important platforms. Whether you are just learning to programmer, or you are a seasoned developer, this book will quickly help you grasp the concepts and become proficient.

Hundreds of books have been written on iOS and Android since the debut of these platforms more than a decade ago. Many of them are well-written by very capable authors. This leads to the inevitable question,  why write another?  

We have taught and developed on these platforms since they appeared, and also have worked on their predecessors (Java MicroEdition, Symbian, etc.) Over the years, we've made a number of observations. First, becoming proficient on either Android and iOS involves a fairly steep learning curve. To help with that of course, both Apple and  Google provide very large and comprehensive sets of how-to guides and reference  documentation. Second, while distinct in terms of programming languages, frameworks and basic vocabulary, these platforms actually have more in common than initially  appears. Third, while developers tend to specialize on one or the other, it is not unusual  for mobile app developers to become proficient on both platforms over time, as many production apps have both iOS and Android implementations.  

Often we find ourselves in situations where we will be explaining a concept on one of the  platforms to a student or developer in terms of what they already know about the other platform.   Similarly, we will have students in one of our courses in which we are teaching iOS tell us  they just got assigned to a new project at work involving Android or vice versa.  At one point we attempted to teach a semester course in mobile app development teaching both Android and iOS at the same time. We realized very quickly that other than a few scattered blog posts, there was very little instructional material available that explored the platforms side-by-side in a comparative manner.  Though we personally were proficient on both platforms, we had not spent enough time organizing our thoughts and materials in a way that would allow the learner to efficiently bridge concepts that related across the platforms, and simultaneously call out situations where a  fundamentally different approach was called for due to intrinsic differences. Instead, our lessons tended to quickly diverge into the details and world of the specific platform and any conceptual overlap was completely obfuscated and lost to the students. The net result was that students spent an enormous amount of effort learning a little bit about both platforms.       

These experiences and observations led us to the conclusion that we could do much better if we organized our thoughts and intentionally created a grand tour of both platforms that iteratively led the student from concept to concept in a logical manner, calling out the similarities and differences as we go. This vision, followed by a lot of discussion and hard work (and encouragement from students and colleagues!) has resulted in this book. 

Our approach is to imagine a fictitious yet non-trivial app that is clearly representative of the many apps consumers currently use daily on their smartphones.  Studying how this app is implemented on both iOS and Android in a logical step by step iterative fashion, exploring various facets of the platforms as we go. Each chapter therefore focuses on one a single key aspect of modern mobile apps and begins with a discussion of the concept itself, and a discussion of the commonalities and potential differences in iOS and Android, pertaining to that particular topic. Once the concepts  have been fleshed out at a conceptual level, we then introduce concrete examples of how  those features are implemented on both iOS and Android. 

This comparative approach to learning a software-related topic is not without precedent.  For many years accredited university computer science programs have offered courses in programming languages. These courses typically survey a variety of programming language principles, constructs, models, and styles, and illustrate them with concrete examples from a variety of programming languages. A common learning objective is to help the students understand programming language principles that lay beyond the mere syntax, and recognize the concept when it appears again in perhaps an entirely different syntax. Armed with these insights, the student not only learns to write better code in a particular language, but can also rapidly assimilate and learn new languages. For example, a student who has been exposed to lambdas in Ruby and who understand how Ruby implements such constructs, and when they are appropriate to use, will immediately recognize and understand closure expressions when they encounter them for the first time in Swift.  

Given the enormous demand for mobile apps and the rapid pace in which iOS and Android are evolving (not mention the platforms that will soon appear on the horizon.) we believe this comparative approach that intentionally calls out concepts in a way that transcends the implementation details will serve the student aspiring to be a professional mobile app  developer well. We believe this approach is also germane to the professional developer who is struggling to keep up with the constant avalanche of new mobile implementation frameworks, concepts, and in some cases even entirely new programming languages!  

Hence our intended audience consists of both the computer science student, as well as the practicing professional developer.  We believe this approach will help the mobile app newbie with no prior knowledge of mobile application development become rapidly proficient on both iOS and Android, and well-prepared to rapidly assimilate whatever our  mobile app development futures may hold. We also believe this approach is an excellent way for the experienced developer who is already proficient on either iOS or Android and would like to become proficient on the other. By bridging the knowledge they already have to the other platform, they will quickly orient themselves and become productive.  


  • Share this book

  • Categories

    • iOS
    • Android
    • Software
    • Computers and Programming
    • Swift
    • Computer Science
    • Java
    • Software
    • Cloud Computing
  • Feedback

    Email the Author(s)

About the Authors

Jonathan E
Jonathan Engelsma

Jonathan Engelsma is a Professor in GVSU’s School of Computing, where he leads the GVSU Mobile Applications and Services Lab.. His research interests are in distributed and pervasive computing with a focus on mobile applications and services. Dr. Engelsma earned his Ph.D. in Computer Science from Michigan State University in 1993. He has over two decades of industry experience, including 16 years in various research and development positions with Motorola. When he's not writing code or teaching, he's likely tending his honey bees.

Hans Dulimarta
Hans Dulimarta

When teaching introductory programming in Java to his students, Hans brags about his hometown in Indonesia. Sharing little knowledge of geography about Indonesia with his students helps them discover that Java is also the name of an island where their instructor was born. A scholarship awarded by the Indonesian government allows him to pursue his graduate degrees at Michigan State University. As a scholarship awardee, he was required to return and work for the Indonesian government after finishing his doctoral degree. After completing the employment requirement as a university professor in Indonesia, he decided to come back to teach in the US and chose West Michigan as the home for his family.

Dr. Dulimarta is currently an associate professor at School of Computing and Information System, Grand Valley State University. A few years ago he started a special section of Introduction to Computer Science II course opened to students who are interested in mobile application development using Android. Under his guidance, the students taking this special section have published several Android apps to the Google Play Store.

Hans' interest in Android programming began since Cupcake and he continues to stay up-to-date with the latest release.

Having research interests both in mobile applications and computer graphics has motivated him to learn Vulkan mobile-first, by exploring the library using Android NDK.

Table of Contents



1.1 Mobile Development Overview

1.2 iOS and Android Contrasted

1.3 Development Environment

1.4 Xcode

1.5 Android Studio

2 Writing your First Mobile App

2.1 Traxy App Overview

2.2 Writing Your First Mobile Ap

2.3 Your First iOS App

2.4 Your First Android App

3 Mobile App Architectures

3.1 Mobile App Software Architecture

3.2 Archiectural Choices

3.2 App Lifecycles

3.4 The Android Manifest

4 Scene Transitions

4.1 Overview

4.2 Fleshing out Traxy for Login and User Signup

4.3 Scene transitions in iOS

4.4 Scene transitions in Android

5 User Interfaces

5.1 Laying out mobile user interfaces

5.2 Layout and styling on iOS

5.3 Layout and styling on Android

6 Collections of Data

6.1 Overview

6.2 Implementing UITableViews in iOS

6.3 Implementing Android RecylerViews

7 Libraries

7.1 Consume or Produce?

7.2 CocoaPods: Integrating 3rd Party Libraries in Xcode

7.3 Library Management in Android

8 Cloud Datastore Integration

8.1 Mobile backends

8.2 Integrating Firebase with iOS

8.3 Integrating Firebase with Android

9 Working with Multimedia

9.1 Personal Media Players

9.2 Multimedia in iOS

9.3 Multimedia in Android

10 Working with Audio

10.1 Working with Audio in iOS

10.2 Working with Audio in Android

11 Networking

11.1 Accessing Web APIs in Mobile Apps

11.2 Integrating web APIs in iOS

11.3 Integrating web APIs in Android

12 More on User Interfaces

12.1 UI navigation considerations

12.2 Tabs and collections in iOS

12.3 Tabs and Grid Layouts in Android

13 Location and Maps

13.1 Location Aware Apps

13.2 Maps and Location on iOS

13.3 Maps and Location on Android

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

80% Royalties. Earn $16 on a $20 book.

We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earnedover $13 millionwriting, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub