Awesome
Awesome Android AOSP
A collection of Android AOSP system (Android Open Source Project) and ROM development related resources.
This collection does not concern the development of application, there is a awesome list concerning this case at JStumpp/awesome-android.
Inspired by many awesome list like sindresorhus/awesome.
This project is in work in progress !!! Some links may be not valid or not so useful.
Contributions are welcome! I am looking for any kind of information that can help in the development of Android ROM. Don't hesitate to participate to make pull requests and or to exchange in the issues. You can read the contribution guidelines to know how to help me.
English is not my primary language, there might be some language mistakes (feel free to correct them!).
There are also other nice resources references available on this repository :
- pages from the official AOSP Android documentation : official_documentation.md
- videos from some interesting video channel : channel_videos.md
Contents
- Contents
- Learning
- Where to start (complete guide)
- Specific point
- Learning tools
- Formation
- Documentation
- Video Channel
- Information
- Tools
- Books
- Online groupes
- News
- Vendors sources
- Blob
- GApps
- ROMs
- Sources example
- Related awesome
- Todo
- Contributing
Learning
Where to start (complete guide)
It is recommended to start with the official documentation available at https://source.android.com/ & https://developer.android.com/.
There is a summary available in this project for navigate more easily and find more quickly what you search : official_documentation.md.
There are also nice complete guide in videos available at channel_videos.md.
- Android Porting Guidebook (2015/unfinished) - An (incomplete) guide book for porting Android ROM.
- Android OS Internals / AOSP Mobile ROM Development (udemy/not free) - Mobile Development.
- Android OS Internals / AOSP Automotive ROM Development (udemy/not free) - Android Automotive.
- Android OS Internals / AOSP in Depth (udemy/not free) - Deep OS Analysis, Android Startup, AMS, WMS, System UI and more.
- Android ROM Development From Source To End (2022) - The ultimate guide for ROM development starting from source to end.
- How to build Android.... Where do I start? (2019/video) - Where newcomers should start.
- Linux Device Driver Programming Using Beaglebone Black (kernel/udemy/not free) - Foundation course on practical Linux device driver programming
- AOSP - Android OS Internals Series (recent/video playlist) - Explore Android 12 from an AOSP point of view.
- Beginners guide to programming C, C++, Bash, Python, java
Specific point
You may find also information at official_documentation.md and at channel_videos.md
Introduction
- Android Getting Started Guide (2015)
- Beginners Guide to Android ROM Development (2013)
- Introduction to AOSP (2022)
- AOSP Introduction : AOSP Source Code Analysis Lecture 1 (2022/video)
- Getting Started | AOSP Rom Development (2020)
- Android rom building made easy - a beginers Guide part 1 part 2 (2017/video)
- Android: What is... (video playlist)
- Android device configuration for AOSP
- How To Setup And Use Fastboot
- Android Platform (AOSP) Development (Part 1): Getting Started
General
- Android Tools (Github) (2021) - Contains public guides and scripts tailored for custom Android Development.
- AOSP Part 3: Developing Efficiently (2014)
- AOSP: Advanced Development Tricks (2021)
- How to build Custom ROMs and Kernels![10,P,O,N,M,L] (2019)
- Intermediate to Advanced Custom Rom and Kernel Building (2019)
- Building AOSP, fastbooting on device (2018)
- Some problems that can occur while rom compilation and their solutions(especially for lettuce) (2019)
- Embedded Android (old/pdf)
- AOSP Build References (2022/video playlist)
- Building My Product on Android Open Source Project (2015/pdf)
- Android System Development (old/pdf)
- Android System Development (2019/pdf)
- Android Hacks, Variants, Tricks and Resources (old/pdf)
- Android Cookbook: AOSP Custom ROM Building 201 (2013)
- Android Cookbook: AOSP ROM Building 102 (2013)
- Complete Android ROM development and essential tutorials (2013)
- How To Port ROMS to Your Device [AOSP] (2013)
- Create your Own Custom ROM an easy way (2016)
- Create own ROM (for any Android device) (2013)
- All you need to know to build Android from scratch! (2018)
- AOSP Build Guide (2018/video)
- Building AOSP (2021)
- Android Build System Ultimate Guide (2013)
- A practical approach to the AOSP build system (2012)
- AOSP Build System (2019)
- AOSP System Image (2019)
- Android internals (old/video playlists)
- android internals (2012/video playlist)
- How to port roms in Windows (2019)
- Android Internals (2010/video)
- Porting to custom hardware (2010/pdf)
- Porting Android to New Hardware (2011/pdf)
- AN11690 - NXP NCI Android Porting Guidelines (2020/pdf)
- Industrialize your ROM cooking: good practices (old/pdf)
- Make your first custom Rom- easiest way
- How to port roms to your Device
- How To Port Different Roms to Your Device - For CM, AOSP & AOKP
- [Development] [Source] [Noob] [Friendly]
- Porting Roms between two similar devices
- How To Port a Custom Rom
- How to port ROMS
- Install a Linux OS alongside almost any Android device
- Complete Shell Script Flashable Zip Replacement + Signing
- Android system init process startup and init.rc full analysis
- Android Gpio use cases by controlling LED
- What is inside the init.rc and what is it used for.
- The init process and init.rc (archive)
- Collection of 'em all - build.prop; init.d; etc.
- How to modify app preferences with adb
- How to Compile AOSPA from Source : + Support and Maintenance
- How to build an unsupported rom using sources from other roms
- A Simple Way to (kind of) Dual Boot an Android
- Keep apps running in background via crond
- Hands-On Exercises for Embedded Android [2020]
- Android 3rd Party Recordings opersys [2015] [playlist]
- Understanding the Android Source Code
- Build Rom From Source
- A COMPLETE ANDROID DEVELOPMENT GUIDE FOR NEWBIES
- Building the Android Open Source Project
- BOOT FROM SD CARD on QMobile Z8 with BRICKED/DEAD eMMC
Building
- Learning about the Android Build Process
- AOSP Part 1: Get the code using the Manifest and Repo tool
- AOSP Part 2: Build variants
- Switching to a custom toolchain
- Tutorial: Android Internals - Building a Custom ROM, Pt. 1 of 2 (Youtube)
- Building The Android Open Source Project 1 (archive), 2, 3, 4
- Prebuilt apk in Build | AOSP Rom Development
- Setting Up Build Environment | AOSP Rom Development
- Anatomy of cross-compilation toolchains
- Building Android O with a Mac
- Building AOSP on macOS
- How to Build Android ROMs on Ubuntu 16.04
- How to build ROM with Google Cloud
- How to import the sources to Android Studio / IntelliJ
- AOSP: Source Code, Repo, Git
- AOSP Emulator Guide
- Android AOSP Source Code Download and Build
- Envsetup.sh configuration lunch for Android development (translate) (original link)
- Detailed explanation of Android compilation system (1) - build/envsetup.sh (translate) (original link)
- Notes on GCC 7.x+ for Android
- Android Build System
- Building Custom Roms
- VirtualBox
- How to build Android from source (2020 edition)
- how to make a flashable package (update.zip)
- Compiling ROMs from Compressed Sources
- Set up ADB and Fastboot on a Mac easily
- How to build Android 11 with low ram
- Noobs guide to decompile/recompile android application
- Create your own UPDATE.ZIP
- Set Up A Build Environment On Android
- Cygwin-Linux Cross-Compiler
- nano Android static build instructions
- Build Custom ROM in windows 10 (WSL2)
- How to build Android on Windows
- How To Compile Rom From Source full guide step by step
- Compile make_ext4fs, simg2img and img2simg using mingw
- Compile busybox on Linux
- Compile busybox (Magisk) for Android with ndk
- Cross compile fstrim for Android on Ubuntu 18.10
- How to compile rsync for Android in Ubuntu
- Learn about the repo tool , manifests and local manifests and 5 important tips !
- Repo Command Reference [official]
- Building LineageOS for your device
Automation
Device tree
- Device Tree Reference
- How to adapt your Device Tree to aosp and compile AOSP-11 from source Full Guide
- how to compile AOSP-10 from source and adapt device tree to pure aosp full guide
- Android Framework - Device Tree in Android
- Creating a device tree from scratch
- How to make a device-tree for your phone
- AOSP Folder Description
- Android Device Tree Bringup
- The method of independently compiling the device tree multi-file multi-dts dependency (translate) (original link)
- How to create Device tree for Android Rom building
Storage
- Universal guide for making your partitions inside super read-writable again.
- SuperPatcherGSI Automated Script for patching the super partition
- Allow SDCard write access & switch SDCard Path
Trebble
- How to make GSIs overlay file for your phone
- GSI Porting Tools for Android
- Guide For Flashing GSIs for all Android devices (2021)
- How to port A system image to AB (system-as-root)
- How to build a Project Treble GSI ROM from source?
Android Framework
- Fundamental of Android Framework
- Android Binder Framework
- AndroidManifest.xml
- Android's HIDL: Treble in the HAL
- Connecting a native HIDL (Project Treble) to a Custom System Service
- What is HIDL ?
- System Service In AOSP
- Android: Unix Domain Socket
- Get Android System write permission
- RRO (Runtime Resource Overlay) in Android AOSP
- Android AIDL Deep Dive
- Android Boot Process
- Android HIDL and Project Treble
- Project Treble. What Makes Android 8 different?
Kernel
- Android kernel from scratch using latest stable from kernel.org?
- The Linux Kernel : Rebasing and merging
- How to get an Android kernel up to date with linux-stable
- Linux kernel merge notes
- How to Rebase a Kernel
- Linux Device Tree Pinctrl Tutorial
- How to compile an Android kernel
- Android kernel development
- start working on android kernel from scratch add kernel commits history qlcom devices part 1
- How To Build Android Kernel With Features
- How to Build Linux Kernel with Android
- How to compile any Android stock kernel
- Kernel For Newbies
- how to upstream the android kernel
- Linux debugging, profiling, tracing and performance analysis
- Real-time Linux with PREEMPT_RT
- How to Upstream Android kernel?
- Working with Android Kernel from Scratch
- How to Update your Android Kernel to Latest Linux Stable
- Android Kernel Features
- Android Kernel Download
- Linux kernel and driver development course
- Android 8.0 learning --- modular kernel (translate) (original link)
- Linux kernel device tree and compilation (translate) (original link)
- KernelNewbies: KernelBuild
- Compiling an Android kernel with Clang
- Captronic Porting Linux on an ARM board (pdf)
- Android Kernel Configs
- Build Your Own Android Kernel
- Kernel Post Compilation Guide; how to turn kernel into img
- Kernel Building - Essentials | Build a Kernel Easily
- Compile your own android kernel from source
- Compile an Android kernel module outside the kernel source tree.
- Compile our own Android Kernel in 5 Simple Steps
- Building the android kernel (Mac OS)
- Automated Linux Kernel CVE Patcher
- How Do Linux Kernel Drivers Work?
- Governors explained
Reverse engineering
Qualcomm
- Codeaurora how to git merge release tag onto kernel/msm-4.4?
- Merge Latest CAF Tags in Your Custom Kernel
- Merge latest CAF Tag in Kernel
- How to merge a newer CAF tag in an android kernel
- How to merge a newer CAF tag in an android kernel
- Porting Kernel Source to Snapdragon Device
- brcmfmac wifi driver & qcwcn libs for MSM8974-based devices like Sony Shinano
MediaTek
- A Noob Guide On Building Your Own Custom Kernel (ARM & ARM64 & MTK)
- A Noob Guide On Building Your Own Custom Kernel on WIN10
- Building a Kernel from source {Mediatek}
Sony
Other vendors
- Compile a custom android kernel for Asus ROG Phone 2 using clang 10
- How to port a newer kernel to android-x86?
- Custom Kernel on 96boards Hikey LeMaker
Blob and dump
- Extract vendor from stock firmware (Sony Xperia Z7 Premium)
- Making Dump Files Out of Android Device Partitions
- Vendor Blob Extraction (v2) old version
- How To Extract Your Stock Firmware from Your Android Device
- Find out which shared libs (.so) are missing
- ldd equivalent on android
- What are blobs and HALs?
- What are Blobs on Android?
- Guide for full firmware extractors
- How to Decompile APKs with ODEX files
- How to easily edit/modify .apk files
- Working with proprietary blobs
- Android definition-tool (vndk-lib-extra-list)
- Android Backup and Restore Tools
- How to Unpack and Repack .CPB firmware/stock Rom [video]
- How to unpack and repack boot.img
- Camera2 API, SHIM, and HAL 3.2 in Android 5.1
- An In-Depth Capitulation of Why MSM8974 Devices Are Excluded from Nougat
- Android's HIDL: Treble in the HAL [2018] [video]
- Android Framework - Creating custom HIDL in Android [2022] [video]
- Android Treble: Blessing or Trouble? [2018] [video]
- Re-Odex a Rom
Reverse Engineering
- Reverse Engineering for Beginners
- Patching your own init and sepolicy
- Discovering, reverse-engineering and using vendor HALs
- On Device Debug! IDA+GDB trace automagic.apk
- Cameras in Custom ROMs: How Developers Make Hardware Work without Source Code
- Example commit : add camera params shim
- patch adbd to run as root
- Getting ADB root access on a Tolino
- Patching the adb daemon to run as root
- Intro to Android App Reverse Engineering workshop
- Android Attributes
- Android Keycodes
- Android Versions
- fastboot oem sha1sum
Feature
Telephony
- Enable VoLTE trhough modem mod (NV Items)
- Android Telephony Basics
- Remove HD ICON (IMS)
- How to ENABLE VOLTE in any ONEPLUS device in Philippines
Encryption
Bluetooth
Graphics
- KCAL - Advanced color control for Qualcomm MDSS 8x10/8x26/8974/8084/8939
- Adreno idler, an idling algorithm for devfreq-based Adreno devices
Audio
Time
Customization
- OnePlus FingerPrint Material Icons
- How to Change Boot Logo (Splash Screen) for Snapdragon Devices
- Change Boot Logo for Exynos Samsung devices
- How to change the official samsung splash/boot screen/logo
- Make Your Own Bootanimations
- Introductory Guide To Theming
- How to make your own boot animations (with sound if you want)
- How to change the default wallpaper when creating a Custom ROM?
- How to create and install android bootanimations from scratch
- The Definitive APK Modding and Theming Thread
- Ultimate Guide Decompiling Theming
- Add N-Style to your Theme + APK
- Make your own Themes for your Samsung device
- How to theme Lollipop and Marshmallow ROMs
- How to use your own handwriting as a font in android
Security
- Building and flashing a secured AOSP build with verified boot and separate lockscreen password for the Nexus 5X
- Signing Builds
- Passing SafetyNet Hardware Attestation on Stock (OEM) ROMs
- avbtool-arm
- Keeping SafetyNet Passing With Incremental Google OTA on Virtual A/B Devices
- Signing boot images for Android Verified Boot (AVB)
- Reflections on Trusting TrustZone [pdf]
SELinux
- How to examine Android SELinux policy
- Working with SELinux on Android
- SELinux for Android 8.0
- Netflix broken DRM workaround instructions (Nexus 7 2013)
Audio
- Fix Bluetooth Audio A2DP & aptX in any GSI ROM
- Fix Bluetooth Audio & aptX & Bluetooth in call in GSI ROM
App integration
Optimization
- Speed up your app
- Timing Boot Time Reduction Technique
- Low-RAM Property Patcher for Android
- Learn to Overclock and Undervolt your phone
Android CTS/VTS & test
- How to build android cts? And how to add and run your test case?
- Android VTS
- Android CTS
- Android System Stability Basics
- Android CTS
Treble GSI
Debugging
- Battery Status: Android
- How to Find App UID
- Make Android Application Debugging Easier with STrace
- Android Debug Bridge Fundamentals
- Can I enable USB debugging using adb?
- Enable ADB from recovery
- 7 Strace Examples to Debug the Execution of a Program in Linux
- Strace outil de dépannage Linux / debugging
- Strace et Ltrace : tracez les appels systèmes et librairies
- Android Log Analysis
- How to Acquire Logs
- Proper AOSP bug reporting
- Troubleshooting examples
- Errors - Common or Not
- How to take system logcats, kernel logs, and dmesg on Android
- HOW TO USE ADB,DDMS AND TAKE A LOGCAT
- Using ADB and fastboot
- How to get useful logs
- How to get & read a logcat/ Troubleshoot your own issues
- Authorize ADB for a non-booting device
- Most complete ADB command manual
- How to enable/disable Android logcat when using a custom kernel
- Debugging IO on Android
- How to find Android deprecated API
- ADB Workshop and Guide for everyone
- What You Know about Rosie?
- Want to learn how to theme?
- Simple methods to get LOGCAT, DMESG
- Easiest How to use adb, logcat, etc for noobs and newbies
- How To Logcat
- How to make a LOGCAT
- Howto LOGCAT
- Android Fatal signal 11 (SIGSEGV) at 0x636f7d89 (code=1). How can it be tracked down? (how dumping hard error)
Magisk
Vendor specific
Qualcomm
- Qualcomm’s Chain of Trust
- CAF's Android for MSM
- Software Build and Installation Guide, Linux Android (Qualcomm)
- Adreno and Vulkan drivers for Snapdragon 820/1
- Hardware rendering of SurfaceFlinger on Qualcomm Adreno GPUs
- How does someone find which CAF tag of the camera HAL is closest to stock one? / CameraWrapper
- Qualcomm Code Aurora caf-manifest tags
- How do I compile Android 4.4.2 for Qualcomm MSM systems?
- The Compilation Process of Qualcomm Projects written by Beginners
- Little Kernel Boot Loader Overview (pdf)
- Qualcomm® Snapdragon™ 410 processor, sensors Porting Guide (2015/pdf)
- Qualcomm® Snapdragon™ 410 processor, Interfacing Grove Digital Light I2C Sensor, Application Note (2016/pdf)
- Qualcomm® Snapdragon™ 410 processor, Software Build and Installation Guide, Linux Android (2016/pdf)
- Trying to use freedreno/turnip on Adreno 616
- Qualcomm Audio/Usb DAC Optimization, Spl monitor, Biquad Helper
- Unbricking and QPST - All Snapdragon / Qualcomm devices
- Ultimate Qualcomm Snapdragon Unbrick Guide, Snapdragon’s are UNBRICKABLE
- How to Use Qualcomm Flash Image Loader (QFIL)
- Unbrick Qualcomm via QFIL: Using rawprogram0.xml, patch0.xml, MBN
- How to use QFIL to flash Qualcomm (QLM) firmware
- How to return to Stock/Flash Images with QFIL
- How to use Qualcomm Flash Image Loader (QFIL)
- How To Unbrick Qualcomm Android Devices
- Unbrick via external sdcard (no QFIL!)
- Unbrick Qualcomm Mobiles with Step-by-step Guide
- How to fix bugs in custom rom (Qualcomm)
- Optimize GPU 60FPS and CPU processors Qualcomm snapdragon
- Analysis of Qualcomm Secure Boot Chains
- Exploiting Qualcomm EDL Programmers:
- Secure boot and image authentication in mobile tech (Qualcomm)
- Secure Boot and Image Authentication (Technical Overview) [pdf]
- Notes about Qualcomm Secure Boot and Motorola High Assurance Boot
- How to reboot to EDL from fastboot
- NO Recovery mode, No download mode, after OTA on rooted LG G2 (& other devices)
- How to port twrp to qualcomm devices.
- MSM8909 Service Rom From Source / QPST Root + Unlock + Unbrick
- Building Qualcomm modem from sources (msm8626)
- MSM8909 Service Rom From Source / QPST Root + Unlock + Unbrick
- How to Enable Qualcomm Diagnostic Mode
- How to program eMMC images into blank flash with USB only in MSM7630
- i.MX Yocto Project User's Guide (Qualcomm based) [2022] [pdf]
MediaTek
- How To Port TWRP For MediaTek Android Devices
- How To Port TWRP To A/B Partitioned Devices (MediaTek)
- How to Decode LCM for Mediatek Devices
- How To Port & Modify Roms For Mediatek
- So what’s all this talk about Mediatek Secure Boot and DA files?
- How to bypass authentication and flash in EDL with NO auth for FREE
- Dissecting a MediaTek BootROM exploit
- How to port TWRP Recovery to Mediatek Devices
- MTK ADB, Use ADB directly on your device
- Make Custom ROM + Add ROOT for Unbranded Chinese Tablet
- Port/Make Custom Recovery For Any Spreadtrum OR Mediatek Devices
- It's now easy to bypass MediaTek's SP Flash Tool authentication
- How to use MTK Bypass to backup or flash secure boot MTK
- How to bypass authentication and flash in EDL with NO auth
- Minimal Porting Guide For MTK 64BIT Devices
- Manually splitting an MTK firmware (dump) [video]
- MTK based tools to customize/split firmware
- Create Scatter File and Dump Full ROM [MT65xx]
- Amazing Temp Root for MediaTek ARMv8
Raspberry Pi
Samsung
- How To Build CyanogenMod For Samsung Galaxy Note 4 International ("trltexx")
- How To Build CyanogenMod For Samsung Galaxy Note 4 T-Mobile ("trltetmo")
- Remove FRP Lock on Samsung with Combination File (Odin)
- how to build/modify roms for samsung devices
- How to make a System Dump from Odin-packages
- Exploiting Android S-Boot: Getting Arbitrary Code Exec in the Samsung Bootloader
- Restore stock firmware on the Galaxy A7 (2018) using Linux (and heimdall)
Motorola
- Downgrade Motorola Devices
- Motorola Flashing Utilities and Firmware (Unbrick Your Moto)
- Motorola Stock Firmware
- Using Fastboot.exe with Motorola devices
- How to Firmware Restore your Motorola Device on Windows 10 without RSDlite
- Un/locking Motorola Bootloader
- Emergency Download Mode
- Recovering from a hard brick
- Motorola Firmware XML to Bat Converter Tool for Windows
- P2K Tools
- How download latest fastboot firmware with Lenovo Moto Smart Assistant
Other vendors
- Building and Deploying Android AOSP 6.01 for the Wandboard
- Device Tree overlays and U-boot extension board management
- How To Build LineageOS For Barnes & Noble Nook Color ("encore")
- Cara Port Custom ROM AOSP | Android 10
- Embedded Linux boot time reduction course
- Understanding the Linux graphics stack
- Buildroot development course
- Yocto Project and OpenEmbedded development course
- Embedded Linux system development course
- Getting Freedreno Turnip (Mesa Vulkan Driver) on a Poco F3
- All about Spreadtrum
- Bootloader Unlocking on older Qualcomm ZTE Devices
- Unbrick Tutorial For The OnePlus 3T
- Unbrick Oneplus One
- OnePlus One / Two / 3 / 3T / 5 Mega UNBRICK Guide + TWRP Flashing
- Modding the Redmi Note 8 Pro — An Adventure
- FM Radio app by HTC: Reverse Engineer
- emmc basic knowledge from micromedia sttsi
Rom specific
TWRP
- How to create twrp device tree from scratch
- How to DIY Port TWRP for Android
- How to compile TWRP from source step by step
- Compile LineageOS TWRP: Setting up minimal LineageOS TWRP
- TWRP Flags for BoardConfig.mk
- How to compile TWRP touch recovery
- TWRP standard device files for Qualcomm SoCs decryption
- How generate TWRP with TwrpBuilder
- TWRP tree from scratch
- Android.mk : a set of tag
- Compile TWRP
- How to compile TWRP touch recovery
- TWRP 3.0.X for Mediatek Devices.
LineageOS
- How To Port CyanogenMod/LineageOS Android To Your Own Device
- How to adapt a LineageOS device tree for AOSP
- How-to Build LineageOS
- How To Port CyanogenMod Android To Your Own Device (archive wiki)
- How to port SONY Small Apps to Any Device Cm Based Roms
- Building LineageOS for an Unsupported Device
ArrowOS
OmniROM
Other
- Building Alternative Recoveries
- Definitive FAQ for newest miui
- Build or Port MIUI ROM to Any Device
- How to port manufacturer ROM (Sense/Touchwizz...)
- How to Build OrangeFox Recovery on a fox_6.0
- Easiest way to port ParanoidAndroid Rom
- Definitive FAQ for newest miui porting
- How to port sense to non-HTC devices.
- Porting rom to MDPI FROM MIUI AND HDPI
- The Comprehensive AOKP Building Guide
- Compile CWM Recovery
Hardware
Learning tools
C language
Bash & shell
There is also an awesome list with more resources : awesome-shell.
Git, Gerrit & merging
There is also awesome lists with more resources : awesome-git, Git and Git Flow Cheat Sheet and git-tips.
- How AOSP Security Patches are merged into Android Custom ROMs?
- How-To Cherry-Pick Features for your ROM (both Github and Gerrit)
- Oh Shit, Git!?!
- Git Immersion
- Become a git guru
- Git For Newbies
- Using Gerrit code review
- Working with git bisect - To allows you to find out specifically which change or commit caused a particular issue.
- git-cherry-pick documentation
- GitHub and GitLab
- How to make your own repos to send us
- How to use Github
- Understanding and using Gerrit
GNU Make
There is also an awesome list with more resources : awesome-make
Soong
- Soong readme - Official documentation from Google.
Other
Ninja build
Reverse Engeenering
- EVERYONE in Cyber Security Should Understand Reversing (its EASY) [2023] [video]
- Simple Tools and Techniques for Reversing a binary [2016] [video]
- Reverse Engineering #0 - Comment bien débuter et gagner du temps [2021] [french/video]
- Self-Learning Reverse Engineering in 2022 [video]
- Introduction to Firmware Reversing [video]
- Patching Binaries (with vim, Binary Ninja, Ghidra and radare2)
- In-depth: ELF - The Extensible & Linkable Format [video]
- android-scripts - Collection of Android reverse engineering scripts that makes life easier.
- Frida Operation Manual - Android Environment Preparation [orginal language]
- Preliminary Exploration of Android Ransomware Virus [original link]
IDA
- Debugging Dalvik programs with IDA [pdf]
- IDA – Remote debugging d’un process sous Android/Arm (Part1) [french]
ghidra
- How to reverse engineer JNI in Android with Ghidra
- ghidra-jni
- Reverse engineering with #Ghidra: Breaking an embedded firmware encryption scheme
- Reverse engineering with ghidra [playlist]
- Ghidra quickstart & tutorial: Solving a simple crackme
Formation
Documentation
- Android Open Source Project - Official documentation for Android AOSP
- Android Code Search
- LineageOS wiki
- XDA Forum : Android Development and Hacking
- XDA Forum : XDA-University
- XDA Forum : Android Software Development
- XDA : All guides at one place
- Archlinux : How build Android - Steps for building Android on Archlinux (and maybe other distributions).
- Projekt ScriBt wiki (XDA thread & sources)
- bootlin documentation
- Halium
- newandroidbook.com
- arm Developer documentation
- Linux kernel Backport wiki
- Linux kernel Wireless wiki
- Qualcomm Developer documentation
- JCRDoc - Wiki designed to contain errors and fixes for android build errors.
Qualcomm
Sony
Video Channel
List of videos of this channels are available at channel_videos.md.
- AlaskaLinuxUser AKLU
- Android & Linux Development (@remainder30000)
- Dimple S
- Haikal Luthfianino Balukia
- OSP »» Android OS »» ROM »» Android Development
- opersys
Information
Devices databases
Tools
Tools for helping development of Android Rom
General
- Android MADkitchen (careful!) (virustotal) - Fork of the ASSAYYED KITCHEN for Windows (be careful).
- aosp-merger
- ASSAYYED KITCHEN (direct link) - A set of tool for cooking Android on Windows.
- mAid (sources) - An easy and ready-to-use Linux distribution for developing Android.
- Projekt Scribt (XDA thread) - ROM envsetup, sync and build script for learning developers.
- Building from source Any ROM
- Easy EDL Flashing Tool
- AABox2 - Frp Unlock tool.
- Android Advanced Box - Frp Unlock tool.
- Android Script Creator
- DroidFlasher
- GSD Android Tool
- Pack of static Linux binaries for ARM/Android
- TOOL ALL IN ONE
- f2fs-tools for cygwin
- Universal A/B-cloner
- PC/GSI Build Automation Toolkit
- FRP Destroyer
- Android Ultimate Toolbox Pro
- ClassyKitchen
- ROM2box [sources] - All in one FRP, Flashing & unlocking tool.
- firehorse - Research & Exploitation framework for Qualcomm EDL Firehose programmers
- edlrooter - Root exploit for Google Nexus 6 using a leaked Qualcomm Emergency Download (EDL) Mode programmer.
- Poison Kitchen IDE - A powerful IDE for android ROM development.
- ADBTouchScreenControl [source] - Control a device with a broken screen.
- Android Toolkit [sources]
- BlueStacks MultiTool
- Toybox
- ATA GUI - App manager, debloat tool and more.
- Fastboot Unbrick Maker (FUM)
- Android_Unlocker [sources]
- JURASSIC Universal Android Tool
- DualBootPatcher
- repo) - Official tool for managing Android Git repositories.
Generator
- TwrpBuilder - Generate twrp device tree just using recovery.img and build.prop.
- twrpdtgen (doc) - Create a TWRP device tree only from an Android recovery stock image ROM.
- aospdtgen - Create a LineageOS-compatible device tree from an Android stock ROM dump made with dumpyara.
Extractor/Repack/Patcher
- abootimg - Manipulate Android boot images.
- Android Deodexer - For deodex odexed android firmwares.
- Android Image Kitchen - Unpack/repack kernel and recovery images, and edit the ramdisk.
- bootimgtool - Unpack/pack Android boot.img.
- dextra - An alternative to dexdump for displaying information about .dex files.
- Firmware Extraction - Regroupment of available firmware extractors.
- imjtool - A quick extractor of Android images.
- ROME - [ROM] [E]xtractor, a simple GUI for extracting custom and stock ROMs containing.
- Universal Deodexer V5
- DJBTool
- kpack
- mmcblk0 Extractor
- ANDROID_IMG_REPACK_TOOLS
- Henry's unpacker - unpack repack system/vendor images
- Multi Image Kitchen
- Dex Manager
- DexPatcher
- TurkDevs İmage Kitchen
- unmkbootimg
- payload_dumper.py
- update_payload_extractor
- IMG Patch Tools
- Firmware_extractor
- apk.sh [sources] - Makes reverse engineering Android apps easier.
- apktool [sources]
- IDA [Pro]
- mkbootimg_tools [help]
- APK-Patcher - Flashable Zip Template for Modifying System APKs On-Device from Recovery.
- Jancox Tool Unpack Repack ROMs [sources 1,2,3,4/android,linux,windows/download] - For unpacking and repacking ROMs.
- GNU Nano editor v2.2.6 for Android
- LazyFlasher [sources] - the swiss army knife of flashing custom kernels.
- AnyKernel3 [sources/download] Flashable Zip Template for Kernel Releases with Ramdisk Modifications.
- Unpack Repack System.img & System.new.dat
- simg2img - Convert Android sparse images to raw images.
- IMG Patch Tools - sdat2img for OTA zips.
- Carliv Image Kitchen
- Android System Extraction and Repack Tool [sources/download]
Kernel
- best-caf-kernel.py - Finding the best CAF tag for a vendor kernel.
- Kernel Rebaser Script - Rebase an OEM kernel to Android Common Kernel base.
- Toolchain build scripts - A set of script for building kernel with LLCM, clang.
- bldgcc - Builds GCC and binutils for exclusively building kernels.
- Automated Linux Kernel CVE Patcher
- Kernel Buildinator [sources] - Automating as much part as possible of Kernel compiling process.
Blob & vendor
- Android-Blob-Utility (sources) - Easily find which proprietary blobs is needed.
- aosp-missing-blobs - Identify required blobs that are missing from AOSP ROM builds with dependencies.
- DumprX - Firmware extractor based on dumpyara.
- dumpyara - Dumping vendor and Android content of a device.
- dumpyara (Python) - Like dumpyara but code in Python.
- ldcheck - Check dependencies and missing for a blob file.
- Apktool
- Automated Device/Vendor Tree Deblobber
- Ghidra [sources] - A software reverse .engineering (SRE) framework
- androguard - Reverse engineering and pentesting for Android applications.
- Dexcalibur - An Android reverse engineering platform focus on instrumentation automation.
- androidre - Reverse engineering Android.
- gnirehtet - Provides reverse tethering for Android.
- Simplify - Generic Android Deobfuscator.
- Bytecode Viewer - A lightweight user-friendly Java/Android Bytecode Viewer, Decompiler & More.
- Dobby - A lightweight, multi-platform, multi-architecture hook framework.
- Uber Apk Signer - A tool that helps to sign, zip aligning and verifying multiple Android application packages.
- APKiD - Gives you information about how an APK was made.
- APK Studio [source] - IDE for reverse-engineering Android application packages.
- INZ APKTool - Easy and Small application for Decompiling/Recompiling APK, DEX and JAR files.
- dogbolt.org - An online decompiler explorer.
- godbolt.org - Compiler explorer.
- radare2 - UNIX-like reverse engineering framework and command-line toolset.
Conversion
- hidl2aidl - For Converting an existing HAL from HIDL to AIDL.
- OMC Decoder Encoder
Informations
- Device Info HW (playstore/paid version) - A hardware and software information app for Android devices.
- TrustDevice-Android (izzyondroid)- Get informations about security and other.
- Codec Info (playstore/izzyondroid) - Detailed listing of multimedia codecs on your Android device.
- TrebleInfo (playstore/f-droid/izzyondroid) - Check the Treble GSI requirements and determine the correct GSI type for your device.
- Kaltura Device Info (playstore/f-droid)
- Devstat (source/izzyondroid) - Help you debug a number device issues like identifying various features you request in your AndroidManifest.xml.
- SysInfo (izzyondroid) - Simple and powerful application that gives you complete information about your mobile device.
- Getevent - Provides information about input devices and a live dump of kernel input events.
- validatekeymaps - Validate the syntax of input device configuration files, key layout files, key character maps files and virtual key definition files.
- LibChecker (f-droid/playstore) - View the third-party libraries used by applications in your device.
- Debugging enabler [deprecated] - Allow a user to debug their device.
- Bootimage ADB Unsecure Patcher - Modify the ramdisk to set ADB into an unsecure mode in order to debug Android stock ROMs.
- PhoNetInfo [playstore/paid]
Debugging
- Alogview - A coloured log viewer for ADB logcat.
- bdsm - Debbuging Android's Binder.
- Binder Explorer - Represente Binder relations.
- bindump - Map which PIDs communicate over Binder.
- dmtracedump - Generates graphical call-stack diagrams from trace log files.
- dumpsys - Get information about Android system services.
- file-explorer web & file-explorer app - Exploring Android files with your computer.
- jtrace - An augmented, Linux/Android aware strace with plugin architecture.
- Logcat - A command-line tool that dumps a log of system messages.
- memento - A simple but highly useful memory inspection tool.
- PID Cat - Only display log messages coming from a specific application.
- Process Explorer - Show current process like the "top" application.
- Process Explorer web & Process Explorer app - Show current process graphicaly.
- Simpleperf - A native CPU profiling tool for Android (include in Android Studio).
- Simple-ADB (sources) - ADB/Fastboot with a Graphical User Interface.
- strace - A debugging utility to monitor a program system calls or signals it receives.
- logcatTrimmer [source] - Logcat Trimmer on Website rather than 'grep'.
- SysLog [f-droid/playstore]
- ADB Screenshot [download] - Take screenshots while in recovery.
- ADBsync sdcard Backup [download]
- settingsdump.sh [download]
- getprio [download]
- SELinux Audit2Allow Script - A script snippet for turning SELinux audits in a logcat into allow statements ready for supolicy or magiskpolicy.
- SELinux Audit2Allow Script
- SEParser [sources/download] - Facilitate working with SELinux/SEPolicy.
- εxodus trackers apk static analysis
- native-shim - A "shim" for loading native jni files for Android active debugging.
- reverse-hal.sh
- drmemory - Memory Debugger for Windows, Linux, Mac, and Android.
- LiME - Linux Memory Extractor - A Loadable Kernel Module (LKM) which allows for volatile memory acquisition from Linux and Linux-based devices, such as Android.
- Tinker - A hot-fix solution library for Android, it supports dex, library and resources update without reinstalling apk.
- binxml [download/guide] - Dump Android binary XML files (AndroidManifest.xml).
- setvalues [download] - Android settings from the shell.
- zerostat [download] - List partitions and show what percentage they are filled with actual data.
- dtbview.exe [download] - A utility for viewing Device Trees (dtb files).
- binxml.exe [download] - A utility for dumping Android binary XML files (AndroidManifest.xml).
- elfview.exe [download] - A utility for viewing ELF executable files.
- ImgUtil [download] - ImgUtil is a Win32 utility for modifying Android boot images.
- AdbSync [download] - AdbSync is a Win32 utility for syncing files to and from an Android device.
- DexDump [download] - A simple utility for enumerating the classes in an application (.apk), a framework (.jar) or an extracted dex file.
- JavaStub [download] - For turning Android Dalvik Smali files into Java "stub" files.
- MergeSmali [download]
- QcomView Utility [download] - Itility for analyzing Qualcomm signed executables.
- SepUtil [download] - For modifying SE Linux sepolicy files.
- https://www.temblast.com/adbgrab.htm [download] - AdbGrab is a Win32 utility for grabbing the frame buffer of an Android device.
- EDL Utility [download] - A Win32 utility for accessing the Qualcomm Emergency Download interface on Qualcomm processors.
- UsbMode
- WhatIsIt
- Temblast Android Applications
- AudioCtl-1.0.apk – a simple utility for testing audio.
- Library-1.14.apk – a simple library application.
- Lights-1.0.apk – a simple utility to adjust brightness and color of eink screens.
- NullKbd-1.2.apk – an IME that does nothing.
- Recorder-1.2.apk – an audio recorder that can record 16 or 24 bit audio directly through ALSA.
- Touch-1.0.apk – a utility for testing Nook touch screens.
- AIOlog [sources] - All in One Android Logger.
Partitions, storage & data
- iozone - IO benchmark tool for Android.
- JPT - A "quick & dirty" GPT partition editor.
- mtd-utils Installer [download] - mtd-utils (flash_erase, nanddump, nandwrite).
- Android File System (Network ADB Extension) for Windows Explorer
- Mount System as read write (Android 10+)
- Universal SystemRW / SuperRW feat. MakeRW / ro2rw
- Lanchon REPIT [sources] - The Data-Sparing Repartitioning Tool For Android.
- e2fsck_ANDROID [sources]
Magisk
Drivers
- ADB FASTBOOT AND Flashing Drivers Collection
- Yet Another Universal ADB Driver Package and adbupdater
Other
- Zip Builder v4.5.2 - Build and Sign ANY script based installer
- Obfuscated apk decompile/recompile tool
Vendor specific
Nexus
- anestisb/android-prepare-vendor (Github) - A collection of utilities for Nexus devices.
LG
- LGLAF [source 1,2,3] - Utility for communication with LG devices in Download Mode.
- SALT sources - Utility able to communicate with your device while in download mode.
- LG-KDZ-dll-Tool/LGUP_UI-fixer/LG-Kdz-downloader [sources]
- LG-KDZ-dll-Tool - for extracting that dll from a kdz package.
- LGUP_UI-fixer - Yet another little add-on for LGUP to do the same.
- LG-Kdz-downloader - A small batch tool to download kdz files from LG servers.
MediaTek
- SP Flash Tool other source - An application which mainly helps you to flash Stock ROM, Custom recovery and fixing in some extreme cases.
- SP MDT Tool [potential virus!]
- SoftwareDownload Tool
- MediaTek / MTK - Auth Bypass (SLA/DAA) [website] - bypass Serial Link Authentication and Download Agent Authentication on supported devices.
- MTK Droid Root & Tools
- MTK Scatter Studio for Windows
- MTKClient [download] - MTK reverse engineering and flash tool.
Qualcomm
- QFIL Tool [potential virus!]
- QPST Tool [potential virus!]
- Qualcomm USB driver [potential virus!]
- tzexec - Disable baseband firmware signature on Sony Xperia SP & Samsung s7275r.
- pymdt - Python library for mdt firmware manipulation.
Samsung
- Heimdall and website - A cross-platform open-source tool suite used to flash firmware onto Samsung devices.
- Akhil99's Samsung Firmware Extractor
- frija sources - Download latest firmware for a Samsung device.
- Bifrost - Yet another firmware downloader for Samsung devices.
- FRP Removal Tool
- Odin
- Freya [source]
- Thor [source/downloaddocumentation] - An alternative to well-known Heimdall.
- Multi CSC/OMC Auto-Maker [OMC/OPTICS/PRISM]
- samloader - Download firmware for Samsung devices.
Sony
- Flashtool [sources/website/download] - An Xperia device flashing tool.
- UnSIN ~ SIN v3/v4/v5 Unpacker - An unpacker for Sony devices images.
- XperiFirm - Download the current firmware for all Sony Xperia-line smartphones, tablets and accessories.
- anyxperia_dumper [source] - Tool for dump any Sony Xperia image.
- Xflasher [sources] - For flashing old xperia devices.
Huawei (and Honor)
- PotatoNV - Unlock bootloader for Huawei & Honor devices on Kirin SoC.
Xiaomi
- MiFlash
- XiaoMiTool V2
- Mi Flash Pro
- Xiaomi Flash Tool
- Xiaomi Flashable Firmware Creator
- Xiaomi Firmware Updater [sources]
- Xiaomi Sideload - A Partition Management app for Xiaomi smartphone running on MIUI 13 & Newer.
Motorola
- RSD Lite [other source potential virus!/other source potential virus!]
- House of Moto
- Fastboot Flasher
- RSD Flasher
- Motorola OTA Link Generator Tool [sources/instance]
- LMSA: Lenovo's Motorola Smart Assistant [help] - Is an official tool installs on PC.
Other
- One+_TooL - Grayed out Oem_Unlock (Bootloader Unlock)enabler & Engineer Decrypt
- Universal HTC RUU/ROM Decryption Tool [sources]
Users scripts
You can use them as inspiration to create your own or find solutions
- akhilnarang/scripts (Github) - Some script useful for ROM development.
- Build scripts
- LineageOS scripts
- ShivamKumarJha/android_tools (Github) - Collection of scripts to help with Android ROM stuff.
- android_helpful
- Android Build Environment Scripts
- XSans0/my-script
Books
- Android Firmware Customization by Arvind Choudhary (amazon)
- Android Internals series by Jonathan Levin (website/summary)
- Android Internals::Power User's View - volume 1 (amazon/free 2015 edition/wikileaks)
- Android Internals::Developer's View - volume 2 (amazon)
- Android Internals::Security - volume 3 (being written)
- Android Internals::The Implementer's View - volume 4 (being written)
- Android System Programming: Porting, customizing, and debugging Android HAL by Roger Ye (amazon)
- Android Security Internals: An In-Depth Guide to Android's Security Architecture by Nikolay Elenkov (amazon)
- Embedded Android: Porting, Extending, and Customizing by Karim Yaghmour (oreilly/amazon)
- Embedded Programming with Android: Bringing Up an Android System from Scratch by Roger Ye (oreilly/amazon)
Online groupes
Telegram channel
Telegram is often used for asking help and share informations.
- AndroidRom_developers
- Android Building Help - Group for help compiling Android AOSP ROMs.
- Android ROM Development - Discussion about Android ROM development and testing.
- AOSP Tracker - Tracking Android source tags and branches.
- Bringup/FW chat - Chat for device bringup/debugging and firmware.
- Codeaurora Releases - Tracking CAF new releases.
- Linux Kernel Brickers
- TWRP Building Support Group - Support group for building TWRP touch recovery.
- RomDevelopment
- XDA-Hub - Hub for finding specific XDA Telegram group.
- Android dumps
Discord group
Forum
- androidforums
- android-porting (Google Groups)
- droidrzr.com
- phonandroid (french) - French forum for ROM development.
- XDA Forum
Other Groups
- Reddit r/building_android - Reddit group about Android build and port.
News
Vendors sources
Where you can download open source software of your device, like the Linux kernel sources.
- Alcatel
- Archos
- todo
- Asus
- BlackBerry
- BQ
- Fairphone
- Honor
- HTC
- Huawei
- Infinix
- LeBest (LeEco/LeTV)
- Lenvovo
- Open source : search device on support (example : IdeaTab S2109)
- LG
- MediaTek - No open source repositories available directly.
- Meizu
- Nokia / HMD Global
- No sources
- Motorola
- Nothing Phone
- NPX
- Nubia
- todo
- OnePlus
- Oppo
- Qualcomm
- Realme
- Samsung
- Sony
- Vivo
- Wiko
- Xiaomi
- ZTE
Blob
Binary Large OBject are often private libaries that you have to get from vendor systems.
- Android Dumps - Get complete files dumps of specific devices.
- The Muppets (Gitlab/Github) - A regroupment of different vendor files.
- Samsung firmware - there are tools availables to directly download firmware, look at tools chapter
- Motorola firmware
- Xiaomi
- Google Nexus & Pixel
- Lenovo
- Motorola
- VIVO
- firmware.mobi
- OnePlus
GApps
- BiTGApps
- FlameGApps
- Fossapps creator
- LiteGapps
- microG - A anti GAPPS, compatibility with Google Play Service apps without Google.
- NikGApps
- MindTheGapps
- OpenGApps
ROMs
Biggest ROMs projects. You can check her Gerrit instance for study how to port ROMs.
- Android AOSP
- CalyxOS
- GrapheneOS
- LineageOS
- LineageOS with microG
- paranoidandroid
- ProtonAOSP
- TWRP
- OrangeFox Recovery
- /e/OS
Sources example
Source code for some project related to Android AOSP.
- Android AOSP mirror Github
- Android dummy trees - Device & kernel repositories as reference for many devices.
- android-linux-stable (archive)
- Minimal manifest for TWRP
- Linux kernel
- Freedreno, an open source GPU driver for Qualcomm SoC
- LineageOS Source Device Tree Template - Build device trees and port custom ROMs and recoveries to new devices easily with this template.
- Example commit to log device startup
- Magisk
Device project
Some device project source which you can inspect to study how to port devices.
- Project Elixir • [Devices] - Offer a minimal UI enhancement & close to Stock Android ROM with great performance, security and stability.
- Raspberry Vanilla - AOSP for Raspberry Pi 4.
Related awesome
- android-security-awesome - A collection of android security related resources.
- awesome-android - For Android application development.
- awesome-android-ui - List of Android UI/UX Libraries
- awesome-c - A curated list of C good stuff.
- awesome-git - Ressources for learning how to use Git.
- awesome-linux - Collections of Linux & GNU\Linux resources.
- awesome-make - Collections of Make resources.
- awesome-shell - A curated list of awesome command-line frameworks, toolkits, guides and gizmos.
- Git and Git Flow Cheat Sheet - Collection of git commands with descriptions.
- git-tips - Collection of git-tips.
- awesome-reverse-engineering
- osm0sis' Odds and Ends
- Temblast Android Applications, Tools and Patches
- Reverse-Engineering - List resources about reverse engineering.
- awesome-reversing
- Awesome Java
- Guide Ride-From a Newbie to a Dev, Get all you need here
Todo
- https://github.com/davisRoman/aosp-research
- https://forum.xda-developers.com/t/lists-guide-ride-from-a-newbie-to-a-dev-get-all-you-need-here.2281656/
- https://forum.xda-developers.com/t/guide-basic-and-intermediate-development-guides-for-interested-devs-collection.1750733/
- https://www.temblast.com/android.htm
- https://forum.xda-developers.com/t/wip-rom-msm8909-service-rom-from-source-qpst-root-unlock-unbrick.3544178/
- https://forum.xda-developers.com/t/help-interactive-help-forum-tutorials-where-questions-are-encouraged.1605509/
- https://github.com/ysh329/android-reverse-engineering
Contributing
Contributions welcome! Read the contribution guidelines first.