
Create a custom Android launcher for AOSP from scratch, set it as the default, and display installed apps in a grid with home-button access, enabling kiosk mode when needed.
Access the full Android Automotive AOSP car launcher project on GitHub, exploring a custom ROM workflow for kiosk deployments.
Explore Android architecture across five layers, from the application layer to the Linux kernel, and learn about the activity manager, location manager, and package manager.
Explore the android automotive architecture with a diagram showing car-specific modules running in parallel with standard android modules, from system OEM and third-party apps to vehicle hull and vehicle bus.
Set up aosp build environment on a 64-bit system with 400 GB disk space and 16–64 GB RAM, preferably with an SSD, and consider cloud builds via Ubuntu on AWS.
Set up a build environment, download and build the AOSP source, and start the emulator for a quick walkthrough. Install required packages with apt install commands from source.android.com.
Learn how to install repo, a wrapper over Git for Android source management, including methods to download and set up repo on various Ubuntu versions and troubleshooting.
Create a directory, initialize the repo, switch to the latest trial branch, run repo sync, and build the AOSP 12 source for the android automotive car launcher.
Initialize the AOSP environment, select the lunch option for a 64-bit phone emulator, and build the Android 12 AOSP emulator using multi-core make.
Download AOSP 13, initialize repo, specify branch and thread count (16), download source, build the phone emulator, run the emulator, verify the build, and enable developer options by seven clicks.
Explore Android's startup sequence from bootloader loading the Linux kernel to the init process, SELinux setup, property initialization, and starting zygote via init.rc.
Explore how the zygote startup forks to create the system server and app processes, initializes the Android runtime and Dalvik VM, and waits for Activity Manager requests.
the system server is created by forking the zygote, then initializes bootstrap, core, and services like installer, activity manager, power and display managers, package manager, with feature-based conditional starts.
Learn how a launcher app functions as a standard Android application and homescreen replacement, launching on startup and displaying and launching other apps, with potential widgets.
Set your app as the default launcher by adding home intent filters in the Android manifest, or override launchers in the AOSP build using boot completed to auto start.
Explore a launcher app wireframe depicting a grid of current-user apps with icons and labels, where tapping icons opens apps and the home button returns to the launcher.
Create a new project named my launcher, add a blank app grid activity with a main layout, and implement a recycler view to load app icons as the launcher activity.
Create a metadata data class to store app information, including display name, component name, icon, and an intent to launch the app. Retrieve installed app data via the package manager and save it in this holder.
Create and initialize an app metadata class for an Android Automotive car launcher, defining display name, component name, icon, and a launch callback; generate getters and set up the constructor.
Explore the AppLauncherUtils utility class, a collection of helper methods for launcher features. Implement the get launcher apps method to fetch all installed app information from the system.
Create an app launcher utils class with methods to launch an activity and to fetch launcher apps via the package manager, and define launcher apps info with app metadata.
Create a launcher utility that fetches all launcher activities, builds intents with component names and display name, and returns a launcher apps info map for the grid.
Explore how recycler view displays data as a list or grid, linear, grid, and staggered layouts, controlled by layout managers, view holder, and adapter binding data to the recycler view.
Create the app layouts by adding recycler views to the app grid activity, implementing a grid that displays icons with text in rows of up to four items.
Convert the activity layout from constraint to linear and add a recycler view that fills the screen as the app grid for the Android automotive car launcher.
Bind the app grid item view with its metadata by implementing the AppItemViewHolder as the recycler view view holder for the app icon and name.
Create an app item view holder that extends recycler view view holder, bind app metadata to display the icon and name, and prepare click handling for launching.
Implement the app grid by extending the recycler view adapter in the AppgridAdapter, overriding onCreateViewHolder, onBindViewHolder, getItemCount, and getItemId, and add helper methods to complete the adapter.
Create the ABB grid adapter by extending the recycler view adapter, inflate the app item view, bind app metadata, and implement setApps with notifyDataSetChanged.
Enhance an Android automotive app grid by initializing a recycler view with a three-column grid, loading launcher apps via package manager, and refreshing on resume.
Run the automotive launcher to confirm app starts and note layout gaps; implement click listeners to trigger the load-app intent and display drivers and display name for a cleaner view.
Adjust the launcher layout by switching app underscore item XML from match parent to wrap content to reduce icon space, then declare all packages permission to reveal all installed apps.
Add a click listener for each app item to call the launch callback, then use the app launcher utils to build an intent and start the app.
Declare MyLauncher as a home and launcher by adding two manifest categories; when multiple launchers exist, the OS prompts the user to select, making MyLauncher the default home.
Learn to add a complete Android project with source code into the AOSP build system by restructuring folders, copying the manifest, migrating from Gradle to Soong, and configuring the module.
Add a Kotlin project to AOSP by copying and renaming the existing Java sources, editing the Android manifest, and enabling both Java and Kotlin sources in the car launcher module.
Create a Java project and migrate it into aosp by copying the source, resources, and manifest, then modify android.bp and car.mk to include the module and build for automotive.
Migrate your launcher from gradle android studio project to AOSP by copying resource and source folders, replacing the manifest, and updating the android.bp file using a sample app as template.
Build a new launcher package into the AOSP MK file and run the emulator. Set the launcher as the default home app and ensure the car launcher grid uses it.
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 Automotive 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 Automotive 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.
---------------------- ------------------------- --------------------------- --------------------------------- --------------------------------- -------------------