Mobile Application Development
IC 2305
INTRODUCTION TO MOBILE
TECHNOLOGIES AND APPLICATIONS
Mr. Chathura Mahasen Bandara
(Lecturer - p) Department of Information and
Communication Technology, University of Colombo
COURSE OUTLINE
▸ Introduction to Mobile Technologies and Applications
▸ Introduction to Android Development
▸ Creating Applications and Activities
▸ Designing User Interfaces
▸ Intents and Broadcast Receivers
▸ Android Network Programming
▸ Files, Saving State, and Preferences
▸ Databases and Content Providers
▸ Background Threads
▸ User Experience
▸ Mobile Application Testing
CONTENT
• Evolution of Mobile Technologies
• Smartphone Statistics
• History of Mobile Application Development
• Common Types of Mobile Application Development
• Source Control
• Mobile Application Architecture
• Design Patterns
• Dependency Management
• Mobile Application Testing
• Continuous Integrations
• Mobile Release Management
• Mobile Application Distribution
• Mobile Application Review Guidelines
EVOLUTION OF MOBILE TECHNOLOGIES
▸ Mobile technology is the technology used for cellular
communication.
▸ Enhancements in Mobile Data Transfer speeds since
1980s. (1G to 5G)
▸ Enhancements in Mobile Hardware. Processor, RAM,
Internal Storage, Sensors, SIM
▸ Mobile phone, GPS Device, Internet Communicator, Music
Player, Gaming Console, Smart Watches, Vehicle
Infotainment Systems etc.
▸ Mobile Application Development is the future of Software
Development according to Google's Eric Schmidt. 2010
MOBILE PHONE EVOLUTION
CAR PLAYER AND SMART WATCHES
DEVICE OWNERSHIP
SMARTPHONE STATISTICS (GLOBAL)
▸ 6.84 Billion Smartphone users around the world. (2023)
▸ Almost 16.8 billion mobile devices are currently in use. (2023)
▸ In 2018, there were around 1.56 billion smartphones sales
worldwide.
▸ 81.6% Americans have Smartphones. (2023)
▸ 2009 marked the year that more people accessed the Internet
for the first time from a mobile phone rather than a PC.
▸ 95% of internet users worldwide visit the Web on a mobile
device. (2023)
▸ There are 14 million + jobs directly related to the mobile
industry. (2023)
SMARTPHONE STATISTICS (GLOBAL)
▸ 66% of smartphone users are addicted to their phones.
▸ China is the leader in smartphone market share.
▸ South Korea, the leader in smartphone ownership. 94%
smartphone owners, 6% non-smartphone.
▸ 82% Americans have Smartphones. UK 82%.
▸ There were 230 billion apps downloads in 2023 worldwide.
▸ The most Samsung and Apple are again neck-
and-neck
▸ 88% of smartphone owners use their phone while
driving.
SMARTPHONE STATISTICS (GLOBAL)
▸ 80% of shoppers use a mobile phone in a physical store.
▸ People view 4.2x more products per session within apps,
compared to mobile sites.
▸ 90% of travellers use mobile devices to book travel activities.
(2023)
▸ The iPhone 14 is the best-selling smartphone for the first quarter
of 2023.
▸ The most popular smartphone brand in the world is Samsung
and Apple (2023).
▸ Apple iPhone shipments declined by 4% during 2018, but
overall revenues for iPhone grew by 6%.
▸ Huawei and Xiaomi were among the fastest growing brands.
SMARTPHONE STATISTICS (GLOBAL)
▸ Smartphones with Android are the most popular amongst users.
▸ 70% of smartphones run Android compared to 25% for iOS.
▸ There are currently 3.3 billion active Android devices.
▸ The global mobile ecosystem generated $4.5 trillion in 2023.
▸ There are over 3.4 million available apps at Google Play Store and 2.2
million apps available in the Apple’s App Store.
▸ The App stores revenue was $130 billion in 2023.
▸ By 2020, mobile apps are predicted to be worth approximately 189
billion U.S. dollars in revenues via app stores and in-app advertisement.
SMARTPHONE STATISTICS (LOCAL)
SMARTPHONE STATISTICS (LOCAL)
SMARTPHONE STATISTICS (LOCAL)
SMARTPHONE STATISTICS (LOCAL)
Best-selling smartphones (2023)
FUN FACTS
▸ In Germany / Netherland, there are traffic lights on the
ground for distracted phone users.
FUN FACTS
▸ In Finland, there is an annual “mobile phone throwing”
championship.
HISTORY OF MOBILE APPLICATION DEVELOPMENT
▸ In 1973 at Motorola, made the first call on a Mobile Phone.
▸ First ever smartphone was launched by IBM in 1993. R&D
team at IBM built the first smartphone app.
▸ Personal Digital Assistants (PDAs) were developed in 1996
by Palm Inc.
HISTORY OF MOBILE APPLICATION DEVELOPMENT
▸ 1996 - Palm OS by Palm Inc. for PDAs.
▸ Primarily coded in C, C++.
HISTORY OF MOBILE APPLICATION DEVELOPMENT
▸ WAP (Wireless Application Protocol) Applications.
▸ Technical standard for accessing information over a mobile
wireless network.
HISTORY OF MOBILE APPLICATION DEVELOPMENT
▸ 1998 - Symbian OS, Joint venture of Ericsson, Motorola,
Nokia and PSION.
▸ Most popular smartphone OS on a worldwide average
until the end of 2010. Overtaken by iOS and Android.
▸ C++, Qt SDK or Carbide IDEs.
HISTORY OF MOBILE APPLICATION DEVELOPMENT
▸ 1999 - Java ME Run Time, J2ME.
▸ Developed using tools such as the Sun Java Wireless
Toolkit (formerly J2ME Wireless Toolkit). They are
packaged as JAR files.
HISTORY OF MOBILE APPLICATION DEVELOPMENT
▸ 2002 - Blackberry OS, proprietary OS developed by RIM
(Research in Motion).
▸ The BlackBerry Java Development Environment (JDE),
which combines an SDK, an IDE, and a set of simulators,
has tortured developers for years.
HISTORY OF MOBILE APPLICATION DEVELOPMENT
▸ 2002 - Windows CE, Windows Embedded Compact,
Windows Mobile (Pocket PC Devices).
▸ Windows CE is optimized for devices that have minimal
memory; a Windows CE kernel may run with one
megabyte of memory.
▸ Microsoft Visual Studio
▸ Visual Basic, C#
MOBILE PLATFORMS AND OPERATING SYSTEMS
▸ 2007 - Apple introduced iPhone, run on iOS (Initially
known as iPhone OS).
▸ 2008 - HTC Dream, first Android Phone, Android OS, by
Google.
MOBILE PLATFORMS AND OPERATING SYSTEMS
▸ 2010 - Bada OS, by Samsung (Discontinued in 2013).
▸ 2010 - Windows Phone (WP) OS, by Microsoft is a
replacement successor to Windows Mobile. (Discontinue
on December, 2019).
SMART PHONE SALES
SMART PHONE SALES
GLOBAL SMARTPHONE MARKET SHARE
US SMARTPHONE MARKET SHARE
MOBILE APPLICATION DESIGN
▸ Keep your design simple and intuitive.
▸ Strictly follow the platform guidelines.
▸ Mobile first: touch, voice, pressure, location tracking, accelerometer,
notifications, augmented reality, etc. And consider limitations.
▸ Keep it consistent.
▸ Provide perceptible feedback.
▸ Designs must be finger-friendly.
▸ Keep scalability in mind.
▸ Consider user behavior and psychology. Demographics, Interests,
Geo Location, etc.
NATIVE MOBILE APPLICATION DEVELOPMENT
▸ Using platform specific APIs.
▸ Different programming languages on different platforms.
▸ Offers best performance out of all three development approaches.
▸ Runs more smoothly compared to other approaches.
▸ Receives complete support from official manufactures.
▸ User experience is far superior and specific for platform audience.
▸ Assures quality, security, and device compatibility.
▸ Require experienced developers and might not be the best option
for simple applications.
IOS NATIVE APPLICATION DEVELOPMENT
▸ Must go together with iOS Human Interface Guidelines.
▸ Xcode is the official IDE for development, debugging,
testing, profiling, and distribution.
▸ Programmed in Objectie-C or Swift.
▸ Swift is the recommended programming language of
choice for development since late 2014.
▸ Swift playgrounds app will help you start development.
ANDROID NATIVE APPLICATION DEVELOPMENT
▸ Must go together with Android Design Guidelines.
Currently Material Design.
▸ Android Studio is the official IDE for development,
debugging, testing, profiling, and distribution.
▸ Command line tools can also be used for specific tasks.
▸ Programmed in C++ (NDK), Java, and Kotlin (SDK).
▸ Kotlin was announced as an official Android development
language at Google I/O 2017.
HYBRID MOBILE APPLICATION DEVELOPMENT
▸ Supports both platforms iOS and Android.
▸ Single codebase maintenance.
▸ Suitable for simple mobile application development.
▸ React Native, Flutter, Ionic, Framework 7, PhoneGap.
▸ React primitives render to native platform UI, meaning app
uses the same native platform APIs other apps do.
Programmed in JavaScript.
▸ Flutter draws its own UI, using hardware-accelerated
graphics, which feel natively fast. Programmed in Dart.
HYBRID MOBILE APPLICATION DEVELOPMENT
MOBILE WEB APPLICATION DEVELOPMENT
▸ Responsive Design.
▸ HTML5, CSS, JavaScript.
▸ Relatively easiest approach to maintain.
▸ Less expensive upfront.
▸ Less discoverability and branding opportunities.
▸ Poor performance and does not match with platform
specific usages.
▸ Depends on the browser to run the app.
OUTDATED MOBILE DEVELOPMENT TECHNOLOGIES
▸ Symbian OS C++ Application Development
▸ Sun/Oracle J2ME Application Development
▸ RIM Blackberry OS Java Development
▸ Microsoft Windows Mobile Development
▸ Samsung Bada OS C+ Development
BACK-END DEVELOPMENT TOOLS
▸ Any Server-side scripting languages like Ruby, Java, Python, PHP,
Perl, Erlang, Node.js, etc. can be used to build the backend.
▸ Web servers are programs that store, process, and deliver web
pages and APIs to the users. The communication between client
and server is carried out with the use of HTTP/HTTPS (HTTPS is
recommended). Apache, Microsoft’s IIS, and NGINX.
▸ DBMS - Oracle, MySQL, Redis, PostgreSQL, MongoDB, SQLite
(Embedded).
▸ Microservice platforms such as Docker. [Providing - Isolation and
Portability, Scalability, Resource Efficiency, CI/CD, Version Control]
▸ Collaboration services such as Slack, Asana, Jira, Trello.
OS
FRONT END DEVELOPMENT TOOLS
▸ Xcode for iOS
▸ Android Studio for Android
SOURCE CONTROL
▸ Source control (or version control) is the practice of tracking and
managing changes to code.
▸ Source control management (SCM) systems provide a running history of
code development and help to resolve conflicts when merging
contributions from multiple sources.
▸ SVN is a software versioning and revision control system distributed as
open source under the Apache License.
▸ Git is an open-source distributed source code management system.
▸ Git is a distributed version control system, whereas SVN is a centralized
version control system. Git uses multiple repositories including a
centralized repository and server, as well as some local repositories.
▸ Github, Gitlab, Bitbucket offers online git repository management.
MOBILE APPLICATION ARCHITECTURE
▸ MVC (Model View Controller).
▸ MVP (Model View Presenter).
MOBILE APPLICATION ARCHITECTURE
▸ MVVM (Model View View Model).
▸ VIPER
DESIGN PATTERNS
▸ A design pattern is a general repeatable solution to a commonly
occurring problem in software design.
▸ Singleton (Creational Pattern)
▸ Builder (Creational Pattern)
▸ Adapter (Structural Pattern)
▸ Facade (Structural Pattern)
▸ Command (Behavioral patterns)
▸ Observer (Behavioral patterns)
▸ The architectures we discussed also fall under behavioral patterns.
DEPENDENCY MANAGEMENT
▸ Dependency management is a technique for declaring,
resolving and using dependencies required by the project
in an automated fashion.
▸ iOS - Cocoapods, Carthage, Swift Package Manager
▸ Android - Android Studio supports Gradle build system.
Using build.gradle files in app module and project.
▸ Flutter – Pub
▸ ReactNative – NPM or YARN
MOBILE APPLICATION TESTING
▸ Mobile application testing is a process by which application software
developed for handheld mobile devices is tested for its functionality,
usability and consistency.
▸ Can be tested on real devices and emulators.
▸ Developer testing (Unit and UI), Functionality testing, Performance
Testing, Usability testing.
▸ Alpha, Beta testing usually done before production releases.
▸ Testflight is the beta testing app for iOS distributions.
▸ Google play store supports direct alpha and beta testing of
distributions for invited users.
▸ Firebase (Previously Crashlytics) is a useful tool for crash reporting.
CONTINUOUS INTEGRATIONS AND DELIVERY (CI/CD)
▸ Continuous Integration (CI) is a development practice that
requires developers to integrate code into a shared repository
several times a day. Each check-in is then verified by an
automated build, allowing teams to detect problems early.
▸ iOS - Xcode Server allows you to configure and run ‘Bots’ to
execute tests within your project. Does not support pushing
the builds to the app store.
▸ Android, iOS - Jenkins Server together with Fastlane can
automate build process and distribution.
▸ Fastlane is an open source platform aimed at simplifying
Android and iOS deployment.
MOBILE RELEASE MANAGEMENT
▸ Short and continuous mobile release cycles.
▸ Automated testing is useful for quick releases.
▸ Incremental Rollout to Production.
▸ Releases need to be tagged in source control system.
▸ Release Notes and approvals need to be tracked.
MOBILE APPLICATION DISTRIBUTION
▸ iOS Apps - Apple AppStore - 99$ Annual Fee
▸ Xcode, iTunes/AppStore Connect
▸ Android Apps - Google PlayStore - 25$ one-time
registration fee
▸ Google Play Console
MOBILE APPLICATION REVIEW GUIDELINES
▸ Test your app for crashes and bugs.
▸ Ensure that all app information and metadata is complete and accurate.
▸ Apps should not include content that is offensive, insensitive, upsetting,
intended to disgust, in exceptionally poor taste, or just plain creepy.
▸ Submissions should be final versions with all necessary metadata and
fully functional URLs included; placeholder text, empty websites, and
other temporary content should be scrubbed before submission.
▸ Strictly follow platform guidelines for purchases, deviating platform
guidelines may reject or completely remove your app from appstores.
PREPARATIONS FOR NEXT LECTURE
▸ Read Android Design and Quality Guidelines
▸ Specifically Components section for Phones and Tablets
https://developer.android.com/design
▸ Questions
▸ Email – chathura@ict.cmb.ac.lk