CCS332 - App Cia 2 QB Key
CCS332 - App Cia 2 QB Key
SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Native apps include direct hardware access, platform-specific performance optimization, seamless
integration with device features,
1.
while Hybrid apps offer cross-platform compatibility using a single codebase, faster development time,
and access to some native features through plugins, and
Web apps are accessible through a browser, are generally lighter, and focus on responsive design
across different devices;
Define Ionic.
Ionic is a powerful hybrid app development framework that allows developers to create cross-platform
2.
mobile applications using web technologies such as HTML, CSS, and JavaScript. It provides tools,
components, and libraries that facilitate the process of building apps that work seamlessly on both iOS
and Android devices.
What is meant by Hybrid App Development?
3. A hybrid app is a versatile solution in the realm of mobile applications, bridging the gap between
native and web-based approaches. Developed using a combination of web technologies like HTML,
CSS, and JavaScript, hybrid apps are then encapsulated within a native container.
List out uses of Flutter Development Framework.
Developed by Google, Flutter has garnered attention for its unique approach to hybrid app
4. development, emphasizing a consistent and visually appealing user interface across platforms. Flutter
uses the Dart programming language and offers a comprehensive collection of widgets that contribute
to its expressive UI framework.
5. Potential performance issues compared to native apps, difficulty achieving a fully native look and feel,
limited access to device features without plugins, reliance on frameworks, increased app size,
complexity in debugging, and potential inconsistency in user experience across different platforms;
List out the examples of hybrid app development.
6. Using frameworks like Ionic, React Native, or Xamarin to build cross-platform applications
that can run on both iOS and Android devices, with a single codebase primarily written in
web technologies like HTML, CSS, and JavaScript, allowing for faster development and
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
deployment across multiple platforms; popular examples of hybrid apps built this way
could be: Instagram, Twitter (X), Alibaba, Walmart, and Uber
Mention the advantages of Ionic Development Framework
1. React Native:
Pros:
Large community, familiar JavaScript syntax (based on React), good performance, ability to
access native components, hot reloading for fast development.
Cons:
Can sometimes have performance issues on complex UI, potential learning curve for non-
React developers.
2. Ionic:
Pros:
Easy to learn, uses standard web technologies (HTML, CSS, JavaScript), large ecosystem of
plugins, good for building simple to medium complexity apps.
Cons:
May have performance limitations for demanding apps, native look and feel might not be as
8. robust as fully native apps.
3. Xamarin:
Pros:
Excellent native performance, uses C# for cross-platform development, deep integration with
Microsoft tools, good for complex apps.
Cons:
May require a steeper learning curve for developers not familiar with C#, potential
performance overhead due to the abstraction layer.
4. Flutter:
Pros:
High performance, fast development cycles, rich UI toolkit, unique rendering engine for
consistent look across platforms.
Cons:
Requires learning Dart programming language, potential compatibility issues with older
devices.
Build cross-platform mobile applications rapidly using web technologies like HTML, CSS, and
9. JavaScript, allowing developers to create apps for both iOS and Android with a single codebase,
providing a fast and efficient way to develop mobile UIs with access to native device features through
plugins when needed
A hybrid app is a versatile solution in the realm of mobile applications, bridging the
gap between native and web-based approaches. Developed using a combination of web
technologies like HTML, CSS, and JavaScript, hybrid apps are then encapsulated within a
native container. This approach allows developers to write a single codebase that can be
deployed across different platforms, such as iOS and Android, significantly reducing
development time and costs.
Hybrid apps offer several benefits due to their unique combination of web and native
technologies. Here's a detailed look at these advantages:
1. Cross-Platform Development: One of the major benefits of hybrid apps is their ability
to run on multiple platforms with a single codebase. This significantly reduces
development time and costs compared to building separate native apps for each
platform.
11 2. Faster Development: Hybrid apps leverage web technologies like HTML, CSS, and
JavaScript, which are widely known and used by developers. This familiarity speeds
up the development process as developers don't need to learn platform-specific
languages.
3. Code Reusability: With a single codebase for multiple platforms, developers can reuse
a significant portion of their code, maintaining consistency and reducing the risk of
bugs across different versions of the app.
4. Easy Updates: Unlike native apps that require users to download updates, hybrid apps
can update content and features dynamically without requiring users to install new
versions. This is particularly advantageous for content-heavy apps.
Criteria for creating hybrid app
Creating a hybrid app involves combining elements of both native and web applications. The
decision to create a hybrid app depends on several criteria:
1. Target Platforms: Hybrid apps use web technologies like HTML, CSS, and
JavaScript, making it easier to target multiple platforms (iOS, Android, web) with a
single codebase.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
2. Development Speed: Hybrid apps often have faster development cycles since
developers can reuse code across platforms.
3. Cost Efficiency: Building a single app for multiple platforms can be more cost-
effective than creating separate native apps.
4. Access to Device Features: Hybrid apps can access native device features through
plugins or libraries, but certain complex features might require more effort to
integrate.
5. UI/UX Complexity: For apps with simple UI and basic user interactions, a hybrid
approach may work well. Complex animations and intricate UI might perform better
in native apps.
1. Frameworks:
• React Native: While often associated with native development, React Native
allows developers to build hybrid apps using React, a JavaScript library. It
offers near-native performance and a strong community.
• Flutter: Although primarily known for creating native apps, Flutter offers the
ability to build web and desktop apps, making it a versatile choice. It uses Dart
programming language and provides a single codebase for multiple platforms.
• Visual Studio Code: A lightweight and highly customizable code editor that
supports various extensions for hybrid app development with frameworks like
Ionic and React Native.
• Android Studio: If you're building hybrid apps that will primarily target
Android, Android Studio with plugins can be used to integrate Cordova and
React Native projects.
12
Ionic is a powerful hybrid app development framework that allows developers to create
cross-platform mobile applications using web technologies such as HTML, CSS, and
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
JavaScript. It provides tools, components, and libraries that facilitate the process of building
apps that work seamlessly on both iOS and Android devices. Ionic leverages the capabilities
of Apache Cordova (formerly known as PhoneGap) to bridge the gap between web
technologies and native device features.
2. Cross-Platform Compatibility: One of Ionic's core strengths is its ability to create apps
that run on multiple platforms with a single codebase. This eliminates the need to
develop separate apps for iOS and Android, saving time and effort.
1. Hybrid Apps: Cordova enables the creation of hybrid apps, which are a combination
of web technologies and native device capabilities. Unlike native apps that are
developed for a specific platform, hybrid apps leverage web views to render the user
interface while accessing native device features through Cordova plugins.
2. Web Technologies: Cordova apps are built using standard web technologies such as
HTML, CSS, and JavaScript. This means that developers familiar with web
development can leverage their skills to create mobile applications.
3. Native Functionality: Cordova provides a mechanism for accessing native device
features such as the camera, geolocation, contacts, file system, and more. These features
are exposed through plugins, allowing developers to use JavaScript APIs to interact with
native code.
4. Web Views: Cordova uses native web views to display the user interface. These web
views are essentially embedded browsers that render HTML and CSS. The interaction
between the web view and native code is facilitated by a bridge.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Discuss the tools of hybrid app.
1. Frameworks:
• React Native: While often associated with native development, React Native
allows developers to build hybrid apps using React, a JavaScript library. It
offers near-native performance and a strong community.
• Flutter: Although primarily known for creating native apps, Flutter offers the
ability to build web and desktop apps, making it a versatile choice. It uses Dart
programming language and provides a single codebase for multiple platforms.
• Visual Studio Code: A lightweight and highly customizable code editor that
supports various extensions for hybrid app development with frameworks like
Ionic and React Native.
• Android Studio: If you're building hybrid apps that will primarily target
13 Android, Android Studio with plugins can be used to integrate Cordova and
3. Build Tools:
4. Testing Tools:
• Jest: A widely used JavaScript testing framework that works well with React
Native and other hybrid app frameworks.
5. Version Control:
6. Package Managers:
• npm (Node Package Manager): Used to manage and install packages (libraries,
plugins, modules) for your hybrid app's development.
7. UI Libraries:
8. Debugging Tools:
• Chrome DevTools: Useful for debugging hybrid apps as they are often web-
based. You can inspect elements, monitor network activity, and debug
JavaScript code.
14 Startup latency
Startup latency is the amount of time it takes between tapping on the app
icon, notification, or other entry point, and the user's data showing on the
screen.
Aim for the following startup goals in your apps:
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Cold start in less than 500ms. A cold start happens when the app being
launched isn't present in the system's memory. This happens when it is the
app's first launch since reboot or since the app process is stopped by either
the user or the system.
P95 and P99 latencies very close to the median latency. When the app takes
a long time to start, it makes a poor user experience. Interprocess
communications (IPCs) and unnecessary I/O during the critical path of app
startup can experience lock contention and introduce inconsistencies.
Scroll jank
Jank is the term that describes the visual hiccup that occurs when the system
isn't able to build and provide frames in time to draw them to the screen at
the requested cadence of 60hz or higher.
Apps must target 90Hz refresh rates. Conventional rendering rates are 60Hz,
but many newer devices operate in 90Hz mode during user interactions,
such as scrolling. Some devices support even higher rates of up to 120Hz.
To see what refresh rate a device is using at a given time, enable an overlay
using Developer Options > Show refresh rate in the Debugging section.
Transitions that aren't smooth
This is apparent during interactions such as switching between tabs or
loading a new activity. These types of transitions must be smooth
animations and not include delays or visual flicker.
Power inefficiencies
Doing work reduces battery charge, and doing unnecessary work reduces
battery life.
Memory allocations, which come from creating new objects in code, can be
the cause of significant work in the system. This is because not only do the
allocations themselves require effort from the Android Runtime (ART), but
freeing these objects later (garbage collection) also requires time and effort.
Identify issues
We recommended the following workflow to identify and remedy performance
issues:
a Write down the steps in APP Performance and Explain each step briefly.
Debugging capabilities primarily refer to the tools and features provided within
the chosen IDE (Integrated Development Environment) that allow developers
to identify and fix errors (bugs) in their application code, enabling them to
systematically analyze program execution, step through code line by line,
inspect variable values, and pinpoint the root cause of issues during
development.
Breakpoints:
The ability to set breakpoints at specific lines of code, causing the program to pause
execution at that point, allowing the developer to examine variables and program state at
that juncture.
Step-by-Step Execution (Stepping):
Step Over: Executes the current line of code and moves to the next line, skipping any
function calls within it.
Step Into: Enters a function call, allowing the developer to debug code within the function
step-by-step.
Step Out: Exits the current function and returns to the calling code.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Watchpoints:
Allows monitoring a specific variable, pausing execution when the variable's value
changes, useful for tracking dynamic data changes.
Variable Inspection:
Capability to examine the current values of variables at any point during execution,
providing insights into the data flow.
Console Output:
Printing debug messages to the console to track the progress of the application and identify
potential issues.
Error Handling and Logging:
Integrated mechanisms to catch exceptions and log errors, providing valuable information
about where and when issues occur.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Two popular frameworks commonly used in cross-platform architecture for app development
are React Native and Flutter; both allow developers to build applications for multiple platforms
using a single codebase, primarily utilizing JavaScript for development.
React Native:
Developed by Facebook, it leverages the React JavaScript library to create native-looking apps on
1. both Android and iOS, allowing developers to write components in JavaScript while potentially
using platform-specific languages like Swift or Java for certain functionalities.
Flutter:
An open-source framework by Google, Flutter uses Dart as its programming language and provides
a unique UI rendering engine that enables smooth performance across different platforms.
Examples of cross-platform apps you could build using frameworks like React Native, Ionic, or Flutter
2.
include: a news aggregator app, a simple e-commerce platform, a to-do list app, a fitness tracker, a
social media feed viewer, a language translation tool, a basic portfolio website, or a mobile game with
simple mechanics.
How do you choose the right cross-platform app development framework for your project?
Consider factors like your project's complexity, required features, target audience, development team's
3.
skills, desired performance level, and the need for native-like UI, carefully evaluating frameworks like
Flutter, React Native, Xamarin, Ionic, and Cordova based on their strengths and weaknesses to find the
best fit for your specific needs.
List the Benefits of cross-platform development
3. Consistent User Experience: Cross-platform tools aim to provide a consistent look and
feel across different platforms, maintaining a unified user experience.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
4. Faster Development: Rapid development is possible due to code sharing and quicker
iterations, helping apps reach the market faster.
5. Easier Maintenance: Maintaining a single codebase simplifies updates and bug fixes,
reducing the complexity of managing multiple code repositories.
Primarily use a framework like React Native, Flutter, or Xamarin which allows you to write a
single codebase that can be compiled and run on both iOS and Android devices, essentially
"writing once, running everywhere."
Key steps involved:
1. Choose a Framework:
React Native:
5. Based on JavaScript's React library, offering a large community and familiarity for web
developers.
Flutter:
Developed by Google, uses Dart programming language, known for high performance and
smooth UI.
Xamarin:
Utilizes C# and provides excellent native-like performance, particularly beneficial for
complex apps requiring strong platform integration.
List the tools creating Cross-platform App and programming languages support for it.
There are several popular tools and frameworks available for creating cross-platform apps.Here are
some of the most widely used ones:
1. React Native: Developed by Facebook, React Native uses JavaScript and React to build
cross-platform apps that render native components. It allows for efficient code reuse and
6. provides access to native device APIs.
2. Flutter: Created by Google, Flutter uses the Dart programming language to build apps with
a single codebase for iOS, Android, web, and desktop. It provides a rich set of
customizable UI widgets and has a strong focus on delivering a consistent and performant
experience.
3. Xamarin: Owned by Microsoft, Xamarin uses C# and .NET to build cross-platform apps. It
allows developers to share a significant amount of code while providing
Predict the future of cross-platform app development
7. 1. Corona SDK: Ideal for 2D game development, Corona SDK uses Lua programming
language and supports iOS, Android, and even desktop apps.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Give the Name of Apps made with Xamarine cross-platform app framework
9. FreshDirect (online grocery delivery), UPS (package tracking app), Olo (restaurant delivery app), The
World Bank app, Alaska Airlines app, and Insightly CRM; all of which leverage the benefits of C#
coding to create native-like experiences across Android and iOS platforms.
What is the tool supported to develop a Facebook app ?
App creation and management: Create new Facebook apps, manage settings like app name, platform
access, and user permissions.
APIs: Access a wide range of Facebook APIs to interact with user data, posts, events, messaging, and
more.
10. Graph API: The core API for data retrieval and manipulation on Facebook.
Authentication: Implement login with Facebook using OAuth to authenticate users.
SDKs: Use Facebook SDKs for iOS, Android, and web to integrate Facebook features directly into
your app.
Testing: Test your app functionality using the Facebook Developer tools and sandboxes.
1. Project Goals and Scope: Begin by defining the goals and scope of your app.
11 Understandthe target audience, app purpose, and core features. This clarity will guide
decisions throughout development.
2. Platform Support: Research the platforms you intend to support, such as iOS, Android,
andpotentially others like Windows or web browsers. Choose a framework that aligns with
your desired platform coverage.
4. User Experience and Design: Design a user-friendly interface that adapts well to
differentplatforms. Ensure consistent branding and usability across all devices.
5. Native Feature Access: Check whether the chosen framework allows access to
nativedevice features like camera, GPS, sensors, and notifications. This ensures a rich
user experience.
6. Performance: Performance is critical for user satisfaction. Assess how well the
frameworkoptimizes app speed and responsiveness on different devices.
8. Development Team Expertise: Consider the skills of your development team. If they
aremore proficient in certain languages or frameworks, that might influence your
decision.
10. Customization and Flexibility: Determine how much customization and flexibility the
chosen framework provides. Some frameworks might limit certain design or interaction
possibilities.
11. Testing and Debugging: Ensure the framework provides efficient testing and
debuggingtools for both the shared code and any platform-specific code.
"Native" means building an app specifically for one operating system (like iOS or
Android) using its dedicated programming languages, resulting in optimal performance
but requiring separate codebases for each platform; "Hybrid" uses web technologies like
HTML, CSS, and JavaScript wrapped in a native container to run on multiple platforms
12 with a single codebase, offering faster development
Key Differences:
Platform Specificity:
Native: Designed for a single platform, leveraging full access to device features and APIs.
Hybrid: Primarily web-based, accessing native features through plugins, potentially with
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
performance limitations.
Cross-Platform: Aims to create a native-like experience across multiple platforms using
shared code, often with some platform-specific adjustments.
Development Process:
Native: Requires separate codebases for each platform (e.g., Swift for iOS, Java for
Android).
Hybrid: Uses web technologies within a native container, often requiring less code
maintenance.
Cross-Platform: Uses a single codebase with platform-specific bridges to access native
features.
Performance:
Native: Generally provides the best performance due to direct access to device hardware and
APIs.
Hybrid: May experience performance issues depending on the complexity of the app and the
native container.
Cross-Platform: Can achieve near-native performance with proper optimization.
It strives to provide
It can provide the It may lack some native consistant user
best native user look and feel, but can experience across
User Experience
experience tailored achieve a native user platforms, may not
to each platforms. experience. fully match native
experience.
Requires maintaining
a single codebase,
Easier maintenance as
Requires different but may still need
Maintenance changes can be made to
codebases adjustments for
the single codebase
platform-specific
updates
Write down the steps to create simple Hello world App in Xamerin
First of all, start a new instance of Visual Studio and go to File → New → Project.
On the Menu dialog box that appears, go to Templates → Visual C# → Android → Blank App
(Android).
Give an appropriate name for your application. In our case, we name it “helloWorld” and save it in
the default location provided. Next, click the OK button for the new “helloXamarin” project to load.
On the solution, open Resources → layout → Main.axml file. Switch from Design View and go to
the Source file and type the following lines of code to build your app.
In the above code, we have created a new Android textview. Next, open the folder values and
double-click Strings.xml to open it. Here, we are going to store information and values about
the button created above.
Open MainActivity.cs file and replace the existing code with the following lines of code.
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace HelloXamarin {
public class MainActivity : Activity {
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
}
}
}
Save the application. Build and then run it to display the created app in an Android Emulator.
System Requirements:
Node.js: Install a stable LTS version of Node.js from the official website.
NPM (Node Package Manager): This comes bundled with Node.js and will be used to
install React Native CLI.
2. Installing React Native CLI:
Open your terminal and run the following command to install the React Native CLI
globally:
14 Code
npm install -g react-native-cli
3. Setting up Android Development Environment (if needed):
Android Studio: Download and install Android Studio from the official website.
Java Development Kit (JDK): Ensure you have a compatible JDK installed.
Android SDK: Set up the necessary Android SDKs through Android Studio.
4. Creating a New React Native Project:
Run the following command to create a new React Native project, replacing "MyProject"
with your project name:
Code
npx react-native init MyProject
5. Accessing the Project:
Navigate into your new project directory.
Code
cd MyProject
6. Running the App (Android):
Start the development server.
Code
npx react-native start
Launch emulator or connect a device: Open Android Studio, create an Android Virtual
Device (AVD) if needed, and start it.
Run the app:
Code
npx react-native run-android
Important Considerations:
iOS Development:
If you want to develop for iOS, you will also need to install Xcode and set up necessary
provisioning profiles.
Expo Option:
For a quicker setup, consider using Expo which provides a streamlined way to develop
React Native apps with additional features.
Code Editor:
Choose a code editor like Visual Studio Code to write your React Native code.
1. Flutter Engine
2. Foundation Library
3. Widgets
15 4. Design Specific Widgets
Flutter Engine
It is a portable runtime for high-quality mobile apps and primarily based on the C++ language. It
implements Flutter core libraries that include animation and graphics, file and network I/O,
plugin architecture, accessibility support, and a dart runtime for developing, compiling, and
running Flutter applications. It takes Google's open-source graphics library, Skia, to render low-
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
level graphics.
Foundation Library
It contains all the required packages for the basic building blocks of writing a Flutter application.
These libraries are written in Dart language.
Widgets
In Flutter, everything is a widget, which is the core concept of this framework. Widget in the
Flutter is basically a user interface component that affects and controls the view and interface of
the app. It represents an immutable description of part of the user interface and includes
graphics, text, shapes, and animations that are created using widgets. The widgets are similar to
the React components.
We can understand it from the hello world example created in the previous section. Here, we are
going to explain the example with the following diagram.
In the above example, we can see that all the components are widgets that contain child widgets.
Thus, the Flutter application is itself a widget.
Gestures
It is a widget that provides interaction (how to listen for and respond to) in Flutter using
GestureDetector. GestureDector is an invisible widget, which includes tapping, dragging, and
scaling interaction of its child widget. We can also use other interactive features into the existing
widgets by composing with the GestureDetector widget.
State Management
Flutter widget maintains its state by using a special widget, StatefulWidget. It is always auto re-
rendered whenever its internal state is changed. The re-rendering is optimized by calculating the
distance between old and new widget UI and render only necessary things that are changes.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Layers
Layers are an important concept of the Flutter framework, which are grouped into multiple
categories in terms of complexity and arranged in the top-down approach. The topmost layer is
the UI of the application, which is specific to the Android and iOS platforms.
The second topmost layer contains all the Flutter native widgets. The next layer is the rendering
layer, which renders everything in the Flutter app. Then, the layers go down to Gestures,
foundation library, engine, and finally, core platform-specific code.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
1. Flutter generally offers superior performance and a more consistent cross-platform UI due to its
custom rendering engine, while React Native provides a wider developer base thanks to its reliance on
JavaScript
Define Flutter.
"Flutter" refers to an open-source UI framework created by Google that allows developers to build
2.
cross-platform mobile applications (for both iOS and Android) using a single codebase, essentially
meaning you can write one set of code to deploy on multiple mobile platforms, making app
development more efficient and streamlined;
Give real time App developed with Flutter?
3. Google Ads, Google Pay, eBay Motors, Philips Hue, the Hamilton Musical app, Cryptomaniac Pro,
Insight Timer, Grab, Realtor.com, and Baidu; all showcasing the capability to build cross-platform
applications with high-quality user experiences across Android and iOS devices.
List out the Mobile app performance KPIs to measure app quality
4. Active Users (DAU/MAU), Retention Rate, Session Length, Churn Rate, Conversion Rate, Average
Revenue Per User (ARPU), Cost Per Install (CPI), App Crash Rate, Load Time, User Satisfaction
Score, and Net Promoter Score (NPS);
Define Mobile Angular UI?
5.
Mobile Angular UI is a front-end framework that allows developers to build mobile web applications
using the AngularJS JavaScript framework and the Bootstrap CSS library
List the metrics of app performance.
6. Active users (DAU/MAU), session length, churn rate, retention rate, error rates, network latency,
conversion rate, download count, average revenue per user (ARPU), user satisfaction, application
availability, and cost per acquisition (CPA)
List the functional aspects of debugging capabilities.
Breakpoints setting, variable inspection, watchpoint monitoring, step-by-step execution, call stack
7.
analysis, memory examination, logging functionality, error breakpoints, conditional breakpoints, and
the ability to simulate device interactions to effectively identify and fix issues within the application
code while running on a simulated device environment
Compare UX vs UI designers.
8.
A UX designer focuses on the overall user experience by conducting research, creating user flows, and
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
ensuring the app is intuitive and easy to navigate, while a UI designer takes those UX guidelines and
translates them into the visual elements of the interface, like color schemes, typography, and layout,
making the app visually appealing and user-friendly
What is Reusability in app framework ?
9. Reusability" refers to the ability to use pre-written code components, modules, or design patterns
across different parts of an application, reducing the need to write the same code multiple times, thus
saving development time and effort while promoting consistency across the app
Define easy development in app framework.
"Easy development" with an app framework refers to a development environment where building
10.
applications is simplified by providing pre-built components, readily available functions, and a user-
friendly interface, allowing developers to quickly create complex applications with minimal coding
effort, especially when compared to building from scratch
with Xamarin using C#, React Native relying on JavaScript, and Flutter utilizing Dart, each
offering distinct advantages depending on the project needs and developer expertise; Xamarin
provides a more native-like experience by leveraging platform-specific UI controls, while React
Native bridges JavaScript with native components, and Flutter renders its own UI using a
custom rendering engine, leading to potentially faster performance and consistent look across
platforms.
Key Differences:
Programming Language:
Xamarin: C# (based on .NET framework)
React Native: JavaScript
11 Flutter: Dart
UI Rendering:
Xamarin: Primarily uses native platform UI controls, offering a near-native look and feel
React Native: Bridges JavaScript to native components, potentially leading to some
performance overhead
Flutter: Renders its own UI using a custom rendering engine (Skia), resulting in consistent
appearance across platforms
Performance:
Xamarin: Can achieve good performance with native UI controls but may have some
platform-specific differences
React Native: Performance can vary depending on the complexity of the app and the
JavaScript bridge
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Flutter: Generally considered to have superior performance due to its direct rendering
approach
Choosing the Right Framework:
Xamarin:
Best suited for developers with strong C# experience, projects requiring a high degree of
native-like functionality, and integration with existing .NET codebases
React Native:
Ideal for projects where rapid development is crucial, developers are familiar with
JavaScript, and a large community support is needed
Flutter:
Well-suited for projects prioritizing smooth performance, consistent UI design across
platforms, and fast development cycles with hot reload feature
Ensure you have Android Studio installed and your project is open.
Make sure your project is set to "Debug" mode in the build variant dropdown.
Debugging Process:
Set Breakpoints:
Navigate to your code in Android Studio.
Click on the line number where you suspect an error might occur to set a breakpoint.
Run in Debug Mode:
Click the "Debug" button (green bug icon) in Android Studio.
Your app will launch on the emulator or connected device, pausing execution at the first
breakpoint you set.
Inspect Variables and State:
While paused at a breakpoint:
Hover over variables in the code to see their current values.
Use the "Watch" window to monitor specific variables throughout execution.
Examine the UI state using the "Layout Inspector" to see how views are arranged.
Step Through Code:
Use the debugging controls in Android Studio:
Step Over: Execute the current line and move to the next (skips function calls).
Step Into: Enter a function call to debug inside it.
Step Out: Exit the current function and return to the calling code.
Log Messages:
Add Log.d("TAG", "Message") statements in your code to print debug information to the
Logcat window.
Access Logcat in Android Studio to view the logs.
Handle Exceptions:
Set up exception breakpoints to pause execution when a specific exception is thrown.
Examine the stack trace to identify the source of the error.
Advanced Debugging Techniques:
Debug Layouts:
Use the Layout Inspector to visually inspect your app's UI layout and identify layout issues.
Important Considerations:
Test on Multiple Devices: Debug your app on a variety of devices and screen sizes to
ensure compatibility.
Test Different Scenarios: Cover various user interactions and edge cases to identify
potential bugs.
Review Code Regularly: Good coding practices and code reviews can help prevent bugs in
the first place.
User-centered design:
User research: Conduct thorough user research to deeply understand user needs, pain points,
and behaviors to design specifically for them.
User personas: Create fictional user profiles representing your target audience to guide design
decisions.
Iterative testing: Continuously test designs with real users to gather feedback and refine the
interface.
Simplicity and Clarity:
Minimalist design: Avoid clutter by using only essential elements and visual hierarchy.
Clear labeling: Ensure all buttons, fields, and interactive elements have clear and descriptive
labels.
Cognitive load reduction: Design to minimize the amount of information users need to
process at once.
Consistency:
Visual language: Maintain consistent color schemes, fonts, iconography, and layout across
the entire app.
Platform conventions: Follow platform design guidelines for the operating system (iOS,
Android) to ensure familiarity.
Intuitive Navigation:
Logical structure: Arrange content and features in a logical and predictable way.
Clear navigation hierarchy: Use clear menus and breadcrumb trails to help users understand
their location within the app.
Consistent interaction patterns: Use familiar interaction patterns like tap, swipe, and drag to
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Code Optimization:
Lazy Loading:
Load data only when it's actually needed, especially for large lists or content that
might not be immediately visible to the user.
Pagination:
Divide large datasets into smaller chunks to load data in manageable portions,
improving responsiveness.
Data Caching:
Store frequently accessed data locally (in memory or on device storage) to reduce
server requests and improve loading times.
Image Optimization:
Image Compression:
Reduce image file sizes without significant quality loss using appropriate compression
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Minimize Network Requests: Batch multiple API calls together to reduce the number
of HTTP requests.
Use HTTP/2: Leverage HTTP/2 protocol for faster data transfer and improved
performance.
Implement Offline Mode: Allow users to access essential data even with poor or no
internet connectivity.
Performance Monitoring and Analysis:
Profiling Tools:
Utilize development tools to identify performance bottlenecks, including CPU usage,
memory leaks, and slow rendering operations.
User Experience Monitoring:
Track metrics like loading times, frame rate, and app launch time to understand user
perception of performance.
Device Considerations:
Device Compatibility:
Design and optimize the app for a range of devices with varying hardware capabilities
to ensure smooth performance across different screen sizes and processing power.
Low-Power Modes:
Implement strategies to minimize battery usage when the device is in low-power
mode.
Code reusability is the capacity to repurpose pre-existing code when developing new software
14 applications. Ideally, code reuse should be easy to implement, and any stable, functional code
could freely be reused when building a new software application. Unfortunately, this is not the
case; It’s very important to ensure that the code being reused is appropriate and a good fit for
the software application.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Pre-existing code can be recycled to perform the same function or repurposed to perform a
similar but slightly different function. Code reusability increases productivity reduces costs, and
improves overall quality. Reusability in software development is a highly popular and
productive practice.
Features that Code with a Potential for Reuse should have:
Versatility which allows for the code to be easily adapted for another application.
Compatibility with different hardware.
It should be free of any bugs or defects that may affect the security or dependability of the other
application.
1. Internal reuse – This is when code written internally by a developer team or business is
reused for other projects.
2. External reuse – This is when some third-party tool or code is licensed and employed
in a project. This can be tricky since costs will be involved, and time will be required to learn
and implement the tool. Additionally, it creates a dependency upon an external tool which may
lead to issues further down the line.
Reduced Costs:
Well-maintained code is easier to modify, meaning less time and effort is spent
debugging and troubleshooting issues, leading to lower maintenance costs over the
application's lifecycle.
15 Faster Time to Market:
When updates are easier to implement, new features can be released quickly to
respond to market demands and user feedback.
Improved Quality:
Consistent code quality, achieved through good coding practices and maintainability,
leads to fewer bugs and a more reliable application.
M.A.M. SCHOOL OF ENGINEERING
Accredited by NAAC
Approved by AICTE, New Delhi; Affiliated to Anna University, Chennai
Siruganur, Trichy -621 105. www.mamse.in
Enhanced Scalability:
A maintainable application is easier to adapt to future growth and changing user
needs, allowing for seamless scaling without major code overhauls.
Team Collaboration:
Clear and organized code makes it easier for different developers to understand and
contribute to the project, promoting collaboration and knowledge sharing.
How to achieve good application maintainability in CCS332:
Adhering to Coding Standards:
Following established coding guidelines ensures consistency and readability across
the codebase.
Modular Design:
Breaking down the application into well-defined modules with clear responsibilities
simplifies maintenance and modification.
Proper Documentation:
Thorough documentation explaining code functionality and design decisions
facilitates future understanding and updates.
Unit Testing:
Writing comprehensive unit tests helps identify issues early and ensures code changes
don't introduce new bugs.
Version Control:
Using a version control system allows tracking changes to the code, enabling easy
rollback to previous versions if needed.