ACS314
MOBILE APPLICATION
DEVELOPMENT
LESSON 1
MR ANTHONY WAMBUA
awambua@daystar.ac.ke
+254721589325
Reflection
Colossians 2:6-7
• 6 So then, just as you received Christ Jesus as
Lord, continue to live your lives in him, 7 rooted and
built up in him, strengthened in the faith as you were
taught, and overflowing with thankfulness.
Introduction & setting up the Android Studio
• Overview of Flutter framework
• Overview of Dart
• Mobile platforms
• Compare Flutter to other frameworks
Overview of Flutter framework
• Flutter is an open-source UI framework by Google for
building beautiful, natively compiled, multi-platform
applications from a single codebase.
• Released in 2018
• Uses the Google graphics library What?!
known as Skia.
• Used to develop apps for Android, iOS, Fuchsia
, Web, and Desktop (MacOS, Linux, Windows)
Some History in Mobile Application
Development
• There are three major mobile platforms:
– Android( Java or Kotlin)
– IOS (Language: Objective-C and Swift)
– Windows Mobile A company e.g bank (KCB,
– Symbian Coop Bank), e-commerce
Used in the early (think Jumia) wishing to launch
– PalmOS days of mobile apps a mobile app had to develop
NATIVE apps for each platform
separately!!
Native mobile apps
Developing an app using right tools specific to a certain
mobile operating system (OS)
Features:
• Easy access to device APIs such as camera, microphone, loc
ation, and so on.
• Capability to observe and react to system events
• Ability to run background tasks and push notifications
• GPU access for rendering
L1Q1: What are the challenges of having to create native
apps for each platform?
Native App Development Benefits
1. Maximum capability. Native applications can fully use the platform’s capabilities.
2. Complexity. Native development allows for the creation of complex and performant
mobile applications that can be customized and personalized in accordance with the
user’s requirements.
3. Performance. One of the strongest benefits of native components is supreme
performance. Engineers can use numerous native app development tools, APIs, and kits
that ease the process of building an intuitive and performant product.
4. Hardware access. Native apps can ask for direct access to the smartphone’s hardware
such as a microphone, camera, GPS, etc. Unlike native apps, hybrid and cross-platform
apps should use APIs to get access to the hardware, which complicates the app’s
performance.
5. Fewer chances of bugs. Native development reduces the likability of bugs to a minimum.
That’s because mobile app developers need to manage one codebase instead of several.
• These problems led to the emergence of hybrid
frameworks such as
1. React Native: Very popular. Popularized
by Facebook
2. Flutter: Fastest growth, by Google
3. Ionic: Free and open-source framework.
Developed by MIT
4. PhoneGap: Developed by Adobe
5. Xamarin:Owned by Microsoft, Xamarin
first came to use in May 2011
6. Swiftic: DIY app creation platform
L1Q2: What other hybrid frameworks do you know besides the above?
Hybrid vs. cross-platform
The central theme connecting hybrid and cross-platform app development
frameworks is code shareability/single codebase , they achieve this in a totally different way!
Further reading here
• Truly Cross Platform:
Facebook React Native and Google Flutter.
L1Q3: Compare React Native to Flutter highlighting
advantages and limitations of each
Features of Flutter Framework
❖Hot reload
❖Cross-platform development
❖Widget library
❖Native performance
❖Open-source
1) Hot reload makes it possible to see the changes in the code
instantly reflected on the UI. Speeding correction of errors.
2) Cross-platform development single codebase for Android, IoS
Web, Mac and Windows
3) Widget library everything in flutter is a widget!! Cupertino
pack and Material Design are inbuilt. We can create very
complex widgets
4) Native Performance utilize native features such as camera and
geolocation giving the same performance as native apps.
5) Open-source thus a community of Flutter enthusiasts who
come together to answer questions related to Flutter and
discuss it. Flutter is free of cost and has detailed
documentation and communities available online
Another Language??! Why
• Why not Java, Kotlin etc??
• Dart was chosen for a very specific feature set that gives
Flutter an edge over existing languages
1.Easier to learn: Dart does not require an exorbitant time r
equired to learn.
Developers can focus on the Flutter framework instead of s
pendingtime adapting their existing knowledge to fit the ne
w language and semantic constraints.
2. Can be Ahead-Of-Time (AOT) or Just-In Time (JIT) compiled according to
need: AOT compilation eliminates the need for code to be compiled every
time
it is run, leading to faster startup times. This is effective when apps are
installed on a user’s device, leading to much quicker app launches.
• AOT, however, leads to slower development times when the code is
changed or updated. This is when JIT compilation makes for a pleasant
development experience offering easy and quick code changes. Dart use
s JITin development and AOT in production apps, the best of both world
s.
The JIT technique allows for the stateful hot reload Flutter is famous for.
3.Eliminates the need for a declarative language similar
to XML (Android)or JSX (React):
Declarative layout languages often add a lot of code to
the
application by defining a separate language for UI and co
de. For example, in Android.
We will learn about Dart in the next lesson
IDEs for Flutter Development
1. Android Studio by Google
(based on InteliJ IDEA)
2. VSCode by Microsoft.
3. Intelij IDEA
Setting up
Testing Applications
• It is recommended that you have a physical Android
Phone & USB cable.
OR
• Create an emulator device works well with 16GB
RAM and SSD
• IDE (Android Studio, VS Code )
• Download flutter sdk
– Install dart and flutter plugin (This for both Android Studio
and VSCode)
Run the default application using an emulator or Physical
device