Chapter 1 - Overview of Mobile Application Development
Chapter 1 - Overview of Mobile Application Development
Application
Development
Overview of
Mobile
Application
Chapter One
Development
and Flutter
Basics
● Introduction to Mobile Application
Outline
● History of Mobile Application
● Flutter Introduction
● Flutter Architecture
Mobile Application
➔ Mobile application development is the set of processes and procedures involved in
writing software for small, wireless computing devices, such as smartphones and
other hand-held devices.
➔ Like web application development, mobile application development has its roots in
more traditional software development. One critical difference, however, is that
mobile apps are often written specifically to take advantage of the unique features
of a particular mobile device.
➔ a gaming app might be written to take advantage of the iPhone's accelerometer or a
mobile health app might be written to take advantage of a smartwatch's temperature
sensor.
Mobile Application
➔ A mobile application (or mobile app) is a software application designed to run on
smartphones, tablet computers and other mobile devices.
➔ A mobile application, most commonly referred to as an app, is a type of application
software designed to run on a mobile device, such as a smartphone or tablet
computer.
➔ Apps are generally small, individual software units with limited function.
1
➔ A market share of 37.6% in 2010 had dropped to 4.4% in 2012 after Nokia
jumped ship for the Windows Phone platform and other OEMs gathered
beneath the banner of Android with its single, unified marketplace for apps.
➔ The last Symbian smartphone, the Nokia 808 PureView ran the Nokia Belle
➔ Apple’s iPhone set the standard for the new generation of smartphones
when it was first released in June 2007 with its touchscreen and direct
manipulation interface. There was no native SDK until February of 2008
(Apple initially planned to provide no support for third-party apps).
➔ The iOS lineage started with NeXTSTEP, an object-oriented multitasking
OS from the late eighties developed by NeXT Computer
➔ The main programming language for iOS is Objective C. Development is
done through Xcode IDE which has an in-built iOS simulator.
Hybrid Mobile Application Development
➔ Some frameworks allow you to build ‘hybrid’ apps which are not truly native (since their
layout rendering is done via web views) or totally web-based (since they’re packaged for
➔ The disadvantages of hybrid apps are that you only get limited access to the native
functionality of the phone on which the app runs and that such apps are usually slower
➔ Flutter is a cross-platform UI toolkit that is designed to allow code reuse across operating
systems such as iOS and Android, while also allowing applications to interface directly with
➔ The goal is to enable developers to deliver high-performance apps that feel natural on different
platforms, embracing differences where they exist while sharing as much code as possible.
➔ During development, Flutter apps run in a VM that offers stateful hot reload of changes without needing
a full recompile.
Flutter Introductions
➔ For release, Flutter apps are compiled directly to machine code, whether Intel x64 or ARM
instructions, or to JavaScript if targeting the web. The framework is open source, with a
permissive BSD license, and has a thriving ecosystem of third-party packages that
➔ Using the embedder, Flutter code can be integrated into an existing application as a module, or
the code may be the entire content of the application. Flutter includes a number of embedders
for common target platforms, but other embedders also exist.
➔ At the core of Flutter is the Flutter engine, which is mostly written in C++ and supports the
primitives necessary to support all Flutter applications.
➔ The engine is responsible for rasterizing composited scenes whenever a new frame needs to be
painted. It provides the low-level implementation of Flutter’s core API, including graphics
(through Skia), text layout, file and network I/O, accessibility support, plugin architecture, and a
Dart runtime and compile toolchain.
Architectural layers
➔ The engine is exposed to the Flutter framework through dart:ui, which wraps the underlying C+
+ code in Dart classes. This library exposes the lowest-level primitives, such as classes for
driving input, graphics, and text rendering subsystems.
➔ Typically, developers interact with Flutter through the Flutter framework, which provides a
modern, reactive framework written in the Dart language.
➔ It includes a rich set of platform, layout, and foundational libraries, composed of a series of
layers. Working from the bottom to the top, we have
Architectural layers
➔ Basic foundational classes, and building block services such as animation, painting, and
gestures that offer commonly used abstractions over the underlying foundation.
➔ The rendering layer provides an abstraction for dealing with layout. With this layer, you can
build a tree of renderable objects. You can manipulate these objects dynamically, with the
tree automatically updating the layout to reflect your changes.
➔ The widgets layer is a composition abstraction. Each render object in the rendering layer
has a corresponding class in the widgets layer. In addition, the widgets layer allows you to
define combinations of classes that you can reuse. This is the layer at which the reactive
programming model is introduced.
➔ The Material and Cupertino libraries offer comprehensive sets of controls that use the
widget layer’s composition primitives to implement the Material or iOS design languages.