
Navigate the realities of Android development, from heavy dependencies and fragmentation to evolving APIs, while mastering testing, debugging with logcat, and guiding AI to write reliable code.
Discover two ways to download and install Android Studio: from the official website developer.android.com/studio and via the JetBrains Toolbox, with guidance on staying up to date.
Seamlessly update the Android bootcamp by adding a new top section with the latest material, while archiving older sections that remain accessible and are constantly updated.
Set up a new Android Studio project, configure minimum SDK for broad device coverage, explore project structure, main activity, and Jetpack Compose UI with live preview.
Explore wrapping text in a container using Jetpack Compose, applying a box wrapper, surface color, and modifiers to add padding and layout control. Preview changes and compare with SwiftUI.
Modularize your Android app by extracting code into composable functions and wrappers, and understand declarative UI concepts, including parallels with SwiftUI.
Build a simple Android UI by listing names in a column, applying modifiers and padding, then add a centered elevated button with on-click interactions.
Learn to use a remember mutable state to toggle text and background color on click in a composable user interface, demonstrating on-click state changes and conditional styling.
Master Jetpack Compose background design by making the status bar transparent, adjusting top padding, and applying rounded surfaces with color hunt palettes.
Explore day 7 by building a multi-screen Android app with a splash screen and detail screen using composables, mutable state, and modifiers to render a transparent status bar.
Learn to persist UI state across device rotation in Compose using remember Saveable and state hoisting, and hoist state to a parent composable or ViewModel to survive recomposition.
Learn how to use an offline Kotlin compiler to practice, set up offline development environments with Android Studio, create Kotlin files, run console programs, and test code without internet.
Create an android compose project and define a composable greeting. Stack multiple greetings inside a column to learn row and column layout and how the structure governs what is shown.
Day 12 teaches getting user input in Android Compose by building a composable with column layout and text fields, including basic and outline variants, while managing input state with onValueChange.
Create a customized preview by composing a greetings stack with a user input field and a background visibility setting. Implement an onClick to submit input and try a composable theme.
Add interaction to the text field by adding an outlined text field and a clickable button, then arrange and style the layout with column modifiers and alignment.
Learn to migrate from material two to material three and center a subscribe button with a toast using local context. Configure toast text and length while noting basic privacy for a newsletter sign-up flow.
Learn layout from the best by building a clean Android front-end mock of a translation app in Android Studio, with input and output fields, language selectors, icons, and a toast.
Explore when to use modifiers versus spacers to adjust padding and spacing; learn how padding can complicate layouts and how spacers and specific spacing create cleaner, centered, and balanced UI.
Design an app logo with Photoshop or Midjourney, import it into drawable resources, and display it with Jetpack Compose Painter, resizing and clipping to a circle with a background color.
Learn to add and customize text in a composable, adjusting font size and family (including cursive), experiment with layout, placeholders, and resources for an Android translator app mockup.
Explore icons and fonts for android development, including material icons, vector assets, and fonts like noto sans japanese, with practical tips for using them in compose and clip art.
Create a selectable button with a drop down menu, add an arrow down icon, manage expansion with a boolean state, and test grouping items in a box for proper expansion.
In this mock-up, declare six state variables to track input text, output text, original language, translated language, and whether each dropdown is expanded, ensuring the UI responds to user selections.
Diagnose why the dropdown blocks clicks and resolve it by toggling the dropdown state. Use state variables to manage input and display translated output in the outline text view.
Day 24 shows how to implement a collapsible drop down menu using a mutable state boolean to track expanded or dismissed, preparing for item selection in a composable Android flow.
Learn to collapse a drop down menu by toggling expanded state and managing on click and on dismiss in Android, including replacing toast logic.
Build a translation mock app in Jetpack Compose with two state variables for original and translated languages. Implement a dropdown, toast messages, and click-to-expand or dismiss behavior.
Explore displaying a contacts list with a lazy column, backed by a contact data class and a stateful list, plus an add contacts button using a pop-up window.
Learn to create an alert dialog in Jetpack Compose by managing a mutable state to show a pop-up window and handling a name input with confirm and dismiss.
Day 29 teaches debugging Android apps with logcat, println, and log, using tags and info-level messages to inspect contacts and dialog overrides.
Build a multi-contact input form in Android Compose, capturing name and phone into a mock ad hoc database while logging results with logcat.
Demonstrate day 31: show how to display multiple contacts in a mock backend using a composable lazy column, with add, edit, and delete actions in a Kotlin Compose layout.
Learn how to modify a lazy column by applying row and column modifiers, padding, borders, and alignment, then implement add, edit, and delete contact functionality with composables.
Implement delete and edit flows for contacts with Jetpack Compose. Manage selected contact with mutable state, use a lazy column, and add/edit dialogs to update or remove entries.
Master MVVM architecture by mapping data and logic to the model, UI to the view, and using a viewmodel as the bridge that updates and exposes data to the view.
Demonstrate a quick MVVM workflow by building a simple contact app with a view model, live data, and state handling to add contacts and update the UI.
Master multi-screen navigation in Android Compose by exploring options like popups, modals, and dialogs, and learn how to pass data between screens.
Explore Android navigation fundamentals with Kotlin and compose, design a navigation graph, set up a navigation controller and nav host, and move between destinations using simple composables.
Learn to navigate between multiple screens using a navigation host and routes, passing parameters to each composable and looping from first to second to third to fourth and back.
Learn to navigate between multiple screens and pass data, using state variables and route parameters to display entered email on the second screen.
Learn to manage navigation between multiple screens in an Android app by validating email input, preventing navigation when the email is empty, and passing the email data between screens.
Create a super to-do list app by scaffolding a new Android project with Kotlin and Jetpack Compose, configuring dependencies, building a home view, top bar, and lazy column.
Create a super to do list app with customized navigation icon and top app bar, using Jetpack Compose, a lazy column of cards, a toast, and a floating action button.
Create a sealed router as a screen controller to navigate between home and add-to-do screens, and implement a to-do view model with composable navigation and a nav host controller.
Learn to build a modify view for a super to do list app with Jetpack Compose, using a lambda to add or update items via top bar and view model.
Practice building a to-do app using a view model and multiple state variables for title and description, wiring input fields, on-change handlers, and add-to-do logic in android.
Fix the exit navigation in a to-do list app by adjusting the top bar to show or hide the exit button and enable navigation up to the previous screen.
Explore building a professional to-do list database with Android X room, using an entity, primary key, column info, and data access objects for CRUD operations.
Create a to do database with Room, define an entity for the to do data class, and set version with export schema false to store list.
Create and set up a to-do database with Room, defining an entity and data class, configuring version and export schema, and prepare to initialize the repository to store to-do data.
Create a to-do repository linked to a dao, offering suspend CRUD operations and flow-based access to all todos and by id, using a viewmodel scope for async data.
Day 54 guides building a super to-do list app part 11, wiring a graph, a private repository, and a lazy-initialized room database with a todo dao and repository.
Build a to-do list app by creating a custom application class, initializing onCreate to provide graph context, and configuring a device-stored database on the Android device via the manifest.
Day 56-57 part 13 demonstrates building the edit view for a to-do item, using snack messages and scaffold state, and implementing add or update.
Learn to build a simple Android xylophone app that plays audio from the raw directory with a play button, while managing media player lifecycle and debugging device versus simulator issues.
Learn to build a simple Android xylophone app by wiring multiple sound buttons to play distinct mp3 resources using a dynamic MediaPlayer map, with lifecycle aware playback and resource management.
Record xylophone sounds, edit them, and build an Android app from the clips, using lowercase names with underscores or digits, and address playback bugs for the next video.
Refine the simple xylophone project by using a mutable state list of media players, managing playback, completion, and disposal, and building a Jetpack Compose UI with sound buttons.
Learn to replace a crude resource finding approach with proper Android resource IDs, using lowercase naming and R resources, to map sounds to labeled buttons and enable compile-time verification.
Experiment with dynamic bottom height to fit sounds in a column, using height pixels and dpi awareness for a responsive xylophone project.
Explore an Android xylophone layout by computing screen height and density to set dynamic padding and key heights, with pattern variations, colors, and rotation handling.
Learn to use weights to distribute space in a row of buttons and generate dynamic widths from screen width and an index in a simple android xylophone project.
Decorate the simple xylophone app by wiring play sound buttons, applying a colorful bottom color scheme from a color list, and using the modulo operator to cycle colors.
Learn to implement haptic feedback by vibrating on button taps, starting with Android manifest permission and using a vibrator manager for one-shot or pattern vibrations across API levels.
Create a simple xylophone animation in Android by using an animatable 1D vector to shake a play button with spring dynamics, synchronized to sound playback in a Jetpack Compose UI.
Reorganize a multi-screen xylophone app by splitting the main activity into separate files, creating a sealed navigation class and composable home view, and setting up big, small, and intro views.
Design and implement a simple xylophone app with navigation in Jetpack Compose, building a main screen, intro view, and home destinations to play sounds and navigate between screens.
Learn to create a consistent Android app look by aligning the status bar and background colors using Kotlin and dynamic color schemes.
Update the home view with a column layout, spacers, max-width buttons, icons, and a color palette, and note a rotation-related state issue in the composable.
Lock the app in portrait mode to prevent rotation from destroying state, using the Android manifest or runtime orientation requests, and compare a lightweight fix with the ViewModel-based approaches.
Change your android app name by updating the androidmanifest.xml and string resources, then refactor and rename the project, enable localization, sync Gradle, and run to see the xylophone app.
Learn to publish on the Google Play Console, compare developer fees, choose between free and paid apps with in-app purchases, and optimize store listing, category, and icon design.
Explore icon design workflows by comparing Photoshop and Illustrator, learning how vector graphics zoom without pixelation for posters and app icons, with focus on anchor points and precise editing.
Discover Android icon design guidelines and resources from Google and Apple, covering icon grids, bounding boxes, pixel sizes, bleed, and color modes, plus Illustrator workflows for multi-screen apps.
Learn to recover a missing artboard in Adobe Illustrator by centering with Cmd/Ctrl+0 and using fit artboard in window to snap back from viewport problems.
Use the spacebar to switch to the hand tool in Illustrator, allowing you to move and pan across the canvas with any tool, including select, pen, and text, instantly.
Discover how to exit Illustrator's isolation mode when double-clicking; learn to identify the green bar, click the background to exit, and resume selecting icons freely.
Use the direct selection tool to edit specific paths, trim angles, and shape objects. Compare this with the standard selection tool for broader edits, and learn isolation mode basics.
Learn why vector shapes can appear pixelated in Illustrator and how pixel preview mode affects exports, then toggle the preview to see the true export result.
Learn to design an app logo using basic shapes and vector tools—rectangle, ellipse, polygon, arc—creating a rabbit with rounded edges, shading, and export-ready finalization.
Design a compact app logo by resizing a xylophone and rabbit motif without distortion, by enabling scale corners and scale strokes and adjusting strokes for a balanced icon.
Design a playful app logo by building a xylophone with shapes, colors, hex codes, and rounded corners, then duplicate elements and refine alignment.
Design icons by following play store standards, using a template and replaceable mask asset to test constraints, then group all components into a single, self-contained logo.
Integrate a Google AdMob banner in a Jetpack Compose app, publish a free app to the Play Store, and optimize ad placement using the manifest and a banner composable.
Introduce AI assisted coding gradually, blending AI with hands-on learning for responsible pair coding, and discourage overreliance on AI agents to ensure maintainable, expandable projects.
Discover cursor, an AI-powered code editor built on Visual Studio Code, offering ask and answer mode, auto completion, voice input, multi-file changes, and version control integration.
Explore how an ai ide goes beyond autocompletion by leveraging the entire codebase as context to answer questions, aid refactoring, and understand complex projects—not just a productivity boost.
Learn how to use AI assisted coding to import and manage a native android project in android studio, including opening project files, building, modifying, and testing with AI features.
Explore how to use ai-powered editor modes including plan, ask, and agent to scaffold, research, and iterate android project architecture, lifecycle handling, monetization, and release builds toward google play.
Explore agent mode for automatic AI-assisted coding in Android projects, learn to provide context, configure permissions with care, and balance automation with sandbox testing while managing Java and Gradle updates.
Upgrade the Android project to SDK 15, update Gradle and Kotlin plugin, and review code changes with AI assisted mode to ensure clean compile, test, and debug.
Learn how to return from AI-assisted changes to a native Android IDE workflow, configure Gradle and app modules, and ensure projects download dependencies correctly before running.
Discover how to use AI in assistant and ask modes to obtain a detailed step-by-step workflow for updating and publishing an Android app on the Play Store.
Select the app, open test and release, view releases, and create a new release by uploading the Apple app bundle and adding release notes, then finish in Android Studio.
Open Android Studio, adjust version code and version name in build.gradle, then build a signed Android app bundle (aab) for release to the Play Store.
Upload the app bundle to the Google Play Store, ensure the target API level meets Android 15 (API 35), and complete the publish steps, including draft save and privacy checks.
AI-powered updates help indie developers quickly address policy changes and API upgrades, pass reviews, and publish without writing code.
Are you ready to become an Android developer? This 100-day bootcamp is designed to take you from complete beginner to confident app creator — one practical project at a time.
In this hands-on course, you'll learn modern Android development using Kotlin, Jetpack Compose, and Android Studio. You'll start with the basics and gradually build up your skills through daily lessons, challenges, and projects. Each day introduces a new concept or feature, helping you absorb and apply what you’ve learned immediately.
You’ll work on real-world projects, including a To-Do List App and a Xylophone App, all while gaining a solid understanding of layouts, user input, state management, navigation, debugging, and more. By the end of the bootcamp, you’ll not only be able to build beautiful and functional Android apps — you’ll also know how to publish them to the Google Play Store and monetize them with AdMob ads and banners.
This course is perfect for beginners, students, hobbyists, or developers from other platforms looking to transition into Android. No prior experience is needed — just a computer, Android Studio, and a commitment to learning something new each day.
Let’s build your Android development skills together — one day at a time. Join today and start creating!