
Build a custom Android launcher from scratch, display installed apps in a grid as the default launcher, and learn Android architecture, startup, and converting it into a kiosk app.
Gain full project access on GitHub for the Android ROM UI AOSP phone launcher kiosk app, enabling hands-on exploration and collaboration.
Explore Android architecture's five layers — application, application framework, system runtime, hardware abstraction, and Linux kernel — with overview of key managers, libraries, and the Dalvik to ART evolution.
Prepare an aosp build environment by meeting 64-bit, 400 gb disk space, and 16-64 gb ram requirements. Use an ssd and consider cloud ubuntu builds to speed compilation.
Install the necessary packages to set up a build environment, download the AOSP source, build it, and launch the emulator, following apt commands from source.android.com.
Install repo, a git wrapper for managing Aosp source code, using official package or curl, with a simple Ubuntu workaround.
Create a directory, initialize git, set up the wrapper to download the latest AOSP 12 source from the trial branch, then run repo sync, build, and expect 3–4 hours.
Set up the environment, choose the SDK phone x86_64 lunch option, and run a multi-core make to build and run the AOSP emulator on Android 12.
download and configure aosp 13, initialize the repo with the correct branch, sync the source, and build an emulator image to verify android 13 and enable developer options.
Design a launcher app as a standard Android application that serves as the home screen replacement, launching on startup, managing display and launch of other apps, and supporting widgets.
Identify how to make an app the Android launcher by adding home intent filters in the manifest, overriding launchers in AOSP, or listening for boot completed to auto start.
Design a launcher user interface by wireframing a grid of app icons with labels, tapping to open apps, returning to launcher with home, and planning search and recently used apps.
Create a new Android Studio launcher project with no activity, name it my launcher, add the main app grid layout and a blank app grid activity using a recycler view.
Define an app metadata class to store display name, component name, icon drawable, and an intent to launch the app, using the package manager to gather installed app data.
Create an app metadata class to store the display name, component name, icon drawable, and a launch callback, then initialize these four members via the constructor and generate getters.
Define the AppLauncherUtils utility class with helper methods, including get launcher apps, to fetch all installed app information from the system for the launcher components.
Create an app launcher utilities class to launch activities and gather launchable apps via the package manager, using a map of component names to app metadata for the app grid.
Harness AppLauncherUtils to fetch all launchable activities, build intents and app metadata, and return a launchable apps info map for the app grid.
Explore how a recycler view displays data as a list, grid, or staggered grid using layout managers linear, grid, and staggered grid, with a viewholder and adapter binding data.
Implement the app grid layouts by adding a recycler view to display icons and text in a grid, with four items per row as shown in the wireframe.
Replace the constraint layout with a linear layout, assign an app grid area ID, and add a RecyclerView set to match_parent to make the app grid fill the screen.
Create an app grid item with an icon and name, center it in a linear layout, and populate a recycler view with apps using the package manager and launcher apps.
Create the app item viewholder class for the recycler view, binding the app icon and name to the app metadata in the grid.
Develop an app item viewholder extending recyclerview viewholder, with context, image view, and text view. Use a bind method with app metadata to set the icon and name.
Implement a grid app adapter by extending the recycler view adapter to populate the grid with system apps, overriding onCreateViewHolder and onBindViewHolder, getItemCount and getItemId, and add helper methods.
Create a final app grid adapter extending recycler view adapter; override create view holder, on bind view holder, get item count, and use a layout inflator to inflate item views.
Initialize the app grid activity by configuring a three-column recycler view with a grid layout manager, adapter, and package manager, then load launcher apps via launcher utils.
Run the launcher for the first time, enable permissions to access the full app list, implement click events, and fix grid layout margins to address excessive icon gaps.
Fix the app item layout by changing height from match parent to wrap content, and add the permission in the manifest to query all installed apps.
Add an onClick listener to each app icon, binding the launch callback from app launcher utils to start the corresponding activity and open the selected app.
Configure your app to act as the default home screen by adding home and default intents and launcher categories, then select your app as the home app in the emulator.
Learn how to add Android apps to the AOSP build system, either from source or as an APK. Move from Gradle to soong and write BP scripts.
Add a Kotlin project to the AOSP launcher by copying Java sources, editing the files, updating the manifest to include Kotlin, and running on the emulator.
Migrate a simple Java project from Android Studio into AOSP by copying source and resource folders, editing android.bp, and aligning AppCompat, Material, and ConstraintLayout dependencies for the automotive build.
Copy the my launcher project into AOSP by migrating source and resources, create a startup blueprint, and replace the manifest. Do not copy gradle scripts.
Edit blueprint files by renaming the module to my launcher, enabling privileged and system specific true, and adding Java or Kotlin files with gradle dependencies.
Add MyLauncher module to the AOSP build by updating the handheld system XT file and replacing the default launcher, then build and run the emulator to use MyLauncher as default.
Explore ADB, Android Debug Bridge, a command line tool that installs and debugs apps and opens a device shell, with a client on your machine, a daemon on the device.
Master essential adb commands to manage devices and emulators, including listing devices, restarting and killing the adb server, rebooting, opening shells with su, and using dumpsys and serial numbers.
Over the years Android has captured Phones, tablets, TV, and Wear devices. It's running on 2.5 billion active devices. Even though Android is in the market for a long, it's still pretty hard to find structured courses or online resources for AOSP development. That's the reason this course is here.
This course is specially designed for Developers of intermediate level who want to learn about developing Android OS, focusing more on Android Phone Launcher Program Development.
We have tried to make this course as compact and simple as possible. I hope you will learn something new each minute of the tutorials. This course is perfect for those who are new to the AOSP world or want to learn AOSP Phone OS Launcher Program development.
As a prerequisite for this course, you would need a PC with Ubuntu or a Mac book (intel) or an Ubuntu Virtual machine. The course starts with an introduction and environment setup and then covers most of the
Introduction
Environment Setup
Download the Source
Build the source
Architecture
Build Launcher
Boot Animation
Add Apps to AOSP
At the end of the course, you should be able to gain enough knowledge to customize the Automotive Launcher and create your own Android Automotive AOSP Version.
All the very best for your AOSP Career.
---------------------- ------------------------- --------------------------- --------------------------------- --------------------------------- -------------------