📋 Detailed Course Syllabus
🟢 Foundations & Java Essentials
1
Introduction to Android
- What is Android? — history, versions, and market share
- Android architecture overview: Linux Kernel → HAL → ART → Framework → Apps
- Setting up Android Studio, SDK, AVD (Emulator), and physical device debugging
- Creating your first Android app — Hello World project walkthrough
- Understanding the project structure:
AndroidManifest.xml, res/, src/, Gradle files
- Running and debugging the app on emulator and real device
- Android versioning:
minSdk, targetSdk, compileSdk explained
2
Java Fundamentals for Android
- OOP concepts: Class, Object, Inheritance, Polymorphism, Encapsulation, Abstraction
- Interfaces & Abstract classes — when to use each
- Generics — writing type-safe code
- Collections:
List, ArrayList, HashMap, Set — practical usage in Android
- Exception handling: try-catch-finally, custom exceptions
- Multithreading basics:
Thread, Runnable, synchronized
- Lambda expressions & functional interfaces (Java 8+)
- Inner classes and anonymous classes — common patterns in Android listeners
📱 Core Android Components
3
Android App Components
- Activities & the Activity lifecycle:
onCreate, onStart, onResume, onPause, onStop, onDestroy
- Saving & restoring state:
onSaveInstanceState and ViewModel
- Intents — Explicit vs Implicit, passing data with
putExtra
- Fragments — lifecycle, backstack management, and communication
- Services — Started vs Bound; foreground services with notifications
- Broadcast Receivers — system events (boot, network, battery)
- Content Providers — sharing data between apps;
ContentResolver
AndroidManifest.xml — registering components and declaring permissions
4
UI Design & Layouts
- XML layouts — structure, inflation, and the View hierarchy
- Layout types:
LinearLayout, RelativeLayout, ConstraintLayout (preferred)
- Core UI components:
TextView, EditText, Button, ImageView, CheckBox, RadioButton, Spinner
- Advanced widgets:
RecyclerView, CardView, BottomNavigationView, Toolbar
- Responsive design — density-independent units:
dp, sp, match_parent, wrap_content
- Multiple screen sizes —
layout-land, layout-sw600dp, values-v21
- Custom UI components — extending
View and ViewGroup
- Themes, styles, and attribute sets in
res/values/
5
Event Handling
- Click listeners:
setOnClickListener, View.OnClickListener interface
- Long-press, focus, and text-change listeners
- Touch events:
onTouchEvent, MotionEvent action types
- Gesture detection:
GestureDetector — swipe, fling, scroll
- Input handling — keyboard actions, IME options,
InputMethodManager
- Menu events: Options Menu, Context Menu, Popup Menu
- Handling multiple views with a single listener using view IDs
6
Navigation
- Activity-to-Activity navigation:
startActivity(), startActivityForResult() (legacy)
- Activity Result API — modern replacement for
onActivityResult
- Fragment navigation:
FragmentManager, FragmentTransaction, back stack
- Jetpack Navigation Component: NavGraph, NavController, NavHostFragment
- Safe Args plugin — type-safe argument passing between destinations
- Deep links — navigating to a destination from a URL or notification
- Passing data between screens: Intents, Bundle, Serializable vs Parcelable
🗄 Data Storage & Networking
7
Data Storage
SharedPreferences — storing simple key-value data; DataStore (modern replacement)
- Internal storage — reading and writing private files
- External storage — scoped storage (Android 10+),
MediaStore
- SQLite Database —
SQLiteOpenHelper, raw queries, CRUD operations
- Room Database — Entity, DAO, Database class; migrations
- Room with LiveData and Flow — reactive data updates
- File handling — reading / writing JSON, CSV, and binary files
- Caching strategies — offline-first design with Room + Retrofit
8
RecyclerView & Adapters
- RecyclerView architecture — Adapter, ViewHolder, LayoutManager
- ViewHolder pattern — why it matters for performance
- Building custom adapters — single and multiple view types
- Handling click events inside RecyclerView items
DiffUtil — efficient list updates without notifyDataSetChanged()
ListAdapter with DiffUtil.ItemCallback — the recommended approach
- Pagination with Jetpack Paging 3 library for large datasets
- Swipe-to-delete and drag-and-drop with
ItemTouchHelper
9
Networking
- REST APIs integration — HTTP methods: GET, POST, PUT, DELETE, PATCH
- Retrofit 2 — interface-driven API client;
@GET, @POST, @Path, @Body
- OkHttp interceptors — logging, authentication headers, retry logic
- JSON parsing with Gson —
@SerializedName, nested objects, lists
- Error handling —
Response<T>, retrofit2.Call, and network error types
- Adding auth tokens to requests — Bearer token via OkHttp interceptor
- Testing APIs with Postman before integrating in Android
- Handling no-internet scenarios gracefully
10
Background Processing
- Threads & Handlers —
Handler, Looper, HandlerThread
- AsyncTask — basics and why it was deprecated (context leaks)
- Executors —
ExecutorService, thread pools, Executors.newSingleThreadExecutor()
- WorkManager — guaranteed background work, constraints, chaining
- Foreground Services — ongoing notifications for long-running tasks
- Background execution limits (Android 8+) — why WorkManager is preferred
- Scheduling periodic work: sync, report generation, data upload
🔒 Security & Firebase Integration
11
Permissions & Security
- Android permissions model — normal vs dangerous permissions
- Runtime permission requests with
ActivityResultContracts.RequestPermission
- Handling permission denial gracefully — rationale dialogs
- Secure data storage —
EncryptedSharedPreferences, Android Keystore
- Network security —
network_security_config.xml, certificate pinning
- SSL/TLS — trusting custom certificates for enterprise environments
- ProGuard / R8 — obfuscating code to protect business logic
- Preventing reverse engineering — root detection, tamper detection
12
Firebase Integration
- Firebase project setup —
google-services.json, adding Firebase SDK
- Firebase Authentication — Email/Password, Google Sign-In, Anonymous
- Cloud Firestore — collections, documents, queries, real-time listeners
- Firebase Realtime Database — JSON tree structure, offline persistence
- Firebase Cloud Messaging (FCM) — push notifications, notification channels
- Firebase Storage — uploading and downloading images and files
- Firebase Analytics — custom events, user properties, crash reporting
- Firebase Crashlytics — real-time crash monitoring and alerts
🎨 Media, Hardware & Advanced UI
13
Media & Hardware
- Camera integration with CameraX — image capture, video recording, preview
- Image handling — loading with Glide / Picasso; image compression
- Audio playback with
MediaPlayer — pause, seek, audio focus
- Video playback with
ExoPlayer — streaming, adaptive bitrate
- Location services (GPS) —
FusedLocationProviderClient, geofencing
- Sensors — accelerometer, gyroscope, proximity, light sensor
- Barcode / QR code scanning with ML Kit or ZXing
- NFC / RFID integration — reading tags, writing NFC data
14
Advanced UI & UX
- Material Design 3 — components, theming, colour system, typography
- View animations:
ObjectAnimator, ValueAnimator, AnimatorSet
- Transition animations — shared element transitions between Activities
- Custom Views — overriding
onDraw(), onMeasure(), Canvas & Paint
- Dark mode support —
DayNight theme, -night resource qualifiers
- MotionLayout — complex motion and widget animation declaratively
- Shimmer loading effects & skeleton screens for better UX
🏗️ Architecture & Dependency Injection
15
Architecture Patterns
- MVC, MVP, MVVM — comparison, pros/cons, when to use each
- MVVM with Jetpack — ViewModel, LiveData, and DataBinding
- Clean Architecture — Data / Domain / Presentation layers
- Repository Pattern — abstracting data sources (Room, Retrofit, Firebase)
- Use Cases / Interactors — encapsulating business logic
- Unidirectional Data Flow (UDF) — events → state → UI
- Android Jetpack components: ViewModel, LiveData, Room, WorkManager overview
16
Dependency Injection
- Introduction to Dependency Injection — why DI improves testability and maintainability
- Manual DI — constructor injection without a framework
- Dagger 2 — modules, components, scopes (
@Singleton, @ActivityScoped)
- Hilt (recommended) — built on Dagger, less boilerplate
- Hilt annotations:
@HiltAndroidApp, @AndroidEntryPoint, @Inject, @Module, @Provides
- Injecting ViewModels with
@HiltViewModel
- Testing with Hilt — replacing modules for test environments
🧪 Testing & Performance
17
Testing
- Unit testing with JUnit 4/5 — Arrange-Act-Assert pattern
- Mocking dependencies with Mockito —
mock(), when(), verify()
- Testing ViewModels with
InstantTaskExecutorRule and LiveData
- Testing Room DAO with in-memory database
- UI testing with Espresso —
onView(), perform(), check()
- Integration tests — testing Fragments with
FragmentScenario
- Code coverage with JaCoCo — reporting and CI integration
- Debugging tools — Logcat, Android Profiler, Layout Inspector
18
Performance Optimization
- Memory management — the garbage collector, object allocation, and heap analysis
- Avoiding memory leaks — weak references, clearing listeners,
LeakCanary
- Android Profiler — CPU, memory, network, and energy profiling
- Optimising RecyclerView —
setHasFixedSize, setItemViewCacheSize, DiffUtil
- Image loading optimisation — Glide caching, resizing, and format selection
- Reducing APK size — ProGuard, resource shrinking, ABI splits
- App startup optimisation — lazy initialisation, App Startup library
- Battery optimisation — Doze mode, App Standby, battery historian
🚀 Build & Deployment
19
Build & Deployment
- APK vs AAB (Android App Bundle) — why AAB is required for Google Play
- Signing the app — creating a Keystore, signing configurations in Gradle
- Build variants — debug vs release;
buildTypes and productFlavors
- ProGuard / R8 — enabling shrinking, obfuscation, and optimisation for release
- Publishing on Google Play Store — creating a listing, content rating, pricing
- Play Store review process — timelines, policies, and common rejection reasons
- App versioning —
versionCode and versionName strategy
- CI/CD — automated build and deployment with GitHub Actions or Bitrise
🎯 Module 20: Real-World Projects (Must Do)
20
Capstone Projects — Build Production Android Apps
📦 Project Options (pick one or more):
- Inventory / Asset Tracking App — CRUD, barcode/RFID, offline sync, reports
- Chat App — Firebase Realtime DB, FCM notifications, user presence
- E-Commerce App — product catalogue, cart, Razorpay/Stripe payment
- English Learning App — lessons, quizzes, audio, progress tracking
✅ Must-Include Features:
- Firebase / REST API integration
- Authentication & role-based access
- Room DB for offline support
- MVVM + Repository + Hilt
- RecyclerView with DiffUtil
- Unit & Espresso UI tests
- Signed AAB → Google Play deployment
🏆 Key Learning Outcomes
📱
Android Mastery: Design and build scalable Android apps following MVVM and Clean Architecture principles.
🗄
Data Persistence: Implement local storage with Room DB, SharedPreferences, and cloud sync via Firebase / REST APIs.
🔒
Security: Apply runtime permissions, encrypted storage, certificate pinning, and secure authentication flows.
📡
Networking: Consume REST APIs with Retrofit + OkHttp, handle errors, and implement offline-first architecture.
🧪
Testing: Write unit tests with JUnit + Mockito and UI tests with Espresso for production-quality code.
🚀
Deployment: Sign and publish a production AAB to Google Play Store with a CI/CD pipeline.
🎯
Real Projects: Deliver complete, deployable Android applications with clean architecture, tests, and Play Store listing.