Revision Flashcards
(58 cards)
Pros of Mobile Devices
- Always with Users
- Internet Access
- Location Services
- Sensors (Accelerometer, NFC)
- Camera & Microphone
- Free/Low-Cost Apps
Cons of Mobile Devices
- Limited Screen Size
- Limited Battery Life
- Limited Processor Speed
- Limited Network Access
- Limited Input (Soft Keyboard)
- Limited Web Browser Functionality
- Range of Platforms
Native App Development
Build app for specific platform using platform-specific technology apps, programming languages, and SDK
Pros of Native App Development
- Best Performance
- Platform-specific UI
- Supports all OS features
- Full Access to Hardware Features
- Reliable, Secure, Responsive
Cons of Native App Development
- Multiple OS-Dependent Apps
- Cannot Share Code Between Apps
- Slow Development
Use Cases of Native App Development
Apps with
- Heavy Processing
- Graphics-Heavy Visuals (Games)
- Access to Low-Level APIs e.g. Bluetooth
- Access to Hardware Features
Cross-platform App Development
Build app that can run on different platforms using a single codebase written in a non-native intermediate language
Pros of Cross-platform App Development
- Uniform
- Budget Efficient
- Fast Implementation
- Reusable Source Code
- One Set of Unit Tests
- Fast Time to Market
Cons of Cross-platform App Development
- Worse Performance
- Harder Code Design (Not all is reusable across platforms)
- Relies on Intermediate Libraries for Device and OS Features
- Multiple GUIs Needed for Platform Specific Feel
- Long Wait for New Features
Use Cases of Cross-platform App Development
- Large Audience
- Mid-size Business, Low Budget Application
- Time to Market is more important than sleek look and feel
Hybrid App Development
Use web technologies to build apps that are run within a native shell and rendered using an embedded browser
Pros of Hybrid App Development
- Reusable Code
- Faster Development Time
- Leverage Web Libraries e.g. React
- Can Update without Updating on the App Store
Cons of Hybrid App Development
- Not all Code is Reusable
- Speed is Impacted
- Limited Access to Device and OS Features
- UI Differs from Native UI
Use Cases of Hybrid App Development
Wide user base
Limited budget and time
Rapid Mobile App Development (RMAD)
Low-code/no-code platforms to build apps using drag and drop tools to use recyclable software components
Pros of RMAD
Lower Investment
Simple Development Process
Low-code/No-code
Reusable Codebase
Use Cases of RMAD
Suitable for tight deadlines and fast deliverables
Progressive Web App (PWA)
Web applications that behave like native apps. A set of optimal software development practices for making responsive web applications that function without a browser
Pros of PWA
- Low Maintenance Cost
- One Codebase
- Responsive UI
- Installed in Browser
- Works Online and Offline
Cons of PWA
- Limited Functionality
- Less Efficient
Android Architecture Stack
- Applications
- Application Framework
- Runtime and Platform Libraries
- Hardware Abstraction Layer
- Linux Kernel
Android Stack Layer: Linux Kernel
Abstracts device hardware and provides
- Multitasking
- Low-level Core System Services (Memory, Process, Power Management)
- Network Stack
- Device Drivers
Android Stack Layer: Hardware Abstraction Layer
Hardware specific layer (each manufacturer develops a dedicated layer) for modules that interface with device components such as camera, microphone, accelerometer
Android Stack Layer: Runtime and Platform Libraries
Java Development Libraries: General purpose tasks: Networking, String Handling, File Manipulation
Android Development Libraries: Specific to android development: Graphics Rendering, Text Rendering, Database Access