AASDK is a comprehensive C++ library implementing the complete AndroidAutoβ’ protocol stack, enabling developers to create headunit software that seamlessly communicates with Android devices. This library provides all the core functionalities needed to build production-ready AndroidAuto implementations.
- π Complete AndroidAutoβ’ Protocol - Full implementation of the official protocol
- οΏ½ Multi-Transport Support - USB, TCP, and Bluetooth connectivity
- π΅ Rich Media Channels - Audio, video, input, and control channels
- π‘οΈ Security - SSL encryption and authentication
- ποΈ Multi-Architecture - x64, ARM64, ARMHF support
- π¦ Modern Packaging - DEB packages with semantic versioning
- π§ͺ Comprehensive Testing - Unit, integration, and performance tests
- π Extensive Documentation - Complete guides and troubleshooting
Prerequisites:
Get Started in 3 Steps:
- Open VS Code in this directory
- Press
Ctrl+Shift+P
β "Dev Containers: Reopen in Container" - Build:
./build.sh debug
Ubuntu/Debian Quick Setup:
# Install dependencies
sudo apt update && sudo apt install -y build-essential cmake git \
libboost-all-dev libusb-1.0-0-dev libssl-dev libprotobuf-dev protobuf-compiler
# Build
git clone https://github.com/opencardev/aasdk.git
cd aasdk && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
Document | Description |
---|---|
π Complete Documentation | Comprehensive guide covering everything |
π¨ Build Guide | Detailed build instructions for all platforms |
π§ͺ Testing Guide | Complete testing procedures and validation |
π§ Troubleshooting | Solutions for common issues and debugging |
οΏ½ DevContainer Guide | Multi-architecture development environment |
π¦ Packaging Guide | Package building and distribution |
π Modern Logger | Advanced logging system documentation |
β‘ Implementation Summary | Recent changes and features |
Architecture | Container | Use Case | Status |
---|---|---|---|
x64 | Default | Development, servers | β Fully supported |
ARM64 | arm64 | Raspberry Pi 4, modern ARM | β Fully supported |
ARMHF | armhf | Raspberry Pi 3, legacy ARM | β Fully supported |
- β USB Transport - High-speed wired connection with hotplug support
- β TCP Transport - Wireless AndroidAuto over WiFi
- β SSL Encryption - Secure communication channel
- π΅ Media Audio - Music and media streaming
- π System Audio - Navigation prompts and notifications
- π€ Speech Audio - Voice commands and assistant
- π Audio Input - Microphone and telephony
- πΊ Video Channel - App display and mirroring
- π± Bluetooth - Device pairing and management
- π Sensor Channel - Vehicle data integration
- βοΈ Control Channel - System control and configuration
- π±οΈ Input Channel - Touch, buttons, and steering wheel controls
# Linux/macOS/DevContainer
./build.sh debug # Development build with debugging
./build.sh release # Production build with optimizations
./build.sh debug clean # Clean rebuild
./build.sh release package # Build and create packages
# Windows PowerShell
.\build.ps1 debug # Development build
.\build.ps1 release clean # Clean production build
# Windows Batch (auto-detects environment)
.\build.bat debug # Uses WSL, Git Bash, or shows setup help
# Cross-compilation
TARGET_ARCH=arm64 ./build.sh release # ARM64 build
TARGET_ARCH=armhf ./build.sh release # ARMHF build
Use integrated tasks for seamless development:
Ctrl+Shift+P
β "Tasks: Run Task"- Select:
DevContainer: Build Debug (Quick)
# Works on Windows, macOS, Linux
# 1. Open VS Code in project directory
# 2. Ctrl+Shift+P β "Dev Containers: Reopen in Container"
# 3. Build with single command
./build.sh debug
Run Tests:
cd build-debug && ctest --output-on-failure
Performance Testing:
# Memory leak detection
valgrind --leak-check=full ./your_aasdk_app
# Performance profiling
perf record -g ./your_aasdk_app && perf report
Package Testing:
# Create and test DEB packages
./build.sh release
cd build-release && cpack
sudo dpkg -i ../packages/libaasdk*.deb
Package Type | Description | Use Case |
---|---|---|
libaasdk | Runtime library | Production deployment |
libaasdk-dev | Development headers | Building applications |
libaasdk-dbg | Debug symbols | Development and debugging |
Source packages | Complete source | Distribution and archival |
Semantic Date-Based Versioning: YYYY.MM.DD+git.{commit}.{status}
Examples:
2025.07.30+git.abc1234
(clean release)2025.07.30+git.abc1234.dirty
(uncommitted changes)2025.07.30+git.abc1234.debug
(debug build)
Issue | Quick Solution | Full Guide |
---|---|---|
Build errors | ./build.sh debug clean |
BUILD.md |
USB permissions | Add user to plugdev group |
TROUBLESHOOTING.md |
Missing dependencies | Run dependency installer script | BUILD.md#prerequisites |
Cross-compilation | Use DevContainer for target arch | BUILD.md#cross-compilation |
- Check Documentation: Start with DOCUMENTATION.md
- Search Issues: GitHub Issues
- Ask Community: GitHub Discussions
- Report Bugs: Use issue templates with diagnostic info
We welcome contributions! Here's how to get started:
- Read the Guide: Check CONTRIBUTING.md
- Set Up Environment: Use DevContainer for consistent setup
- Follow Standards: Use modern logger categories and coding standards
- Test Thoroughly: Run full test suite before submitting PRs
# 1. Fork and clone
git clone https://github.com/your-fork/aasdk.git
# 2. Create feature branch
git checkout -b feature/amazing-feature
# 3. Set up development environment (DevContainer recommended)
# 4. Make changes and test
./build.sh debug && cd build-debug && ctest
# 5. Submit pull request
GNU GPLv3 - See LICENSE for details
Copyrights (c) 2018 f1x.studio (Michal Szwaj)
Enhanced by the OpenCarDev community
AndroidAuto is a registered trademark of Google Inc.
- Boost Libraries - C++ utility libraries
- libusb - USB device access
- CMake - Build system
- Protocol Buffers - Data serialization
- OpenSSL - Cryptographic functions
- Google Test - Unit testing framework
- OpenDsh - Android Auto headunit using AASDK
- Crankshaft - Raspberry Pi Android Auto solution
- β Modern Logging System - 47+ specialized logging macros
- β Multi-Architecture DevContainers - x64, ARM64, ARMHF support
- β Semantic Versioning - Date-based package versions
- β Comprehensive Documentation - Complete guides and troubleshooting
- β Enhanced Testing - Unit, integration, and performance tests
- β Improved Packaging - Professional DEB package distribution
- Legacy logging syntax remains fully supported
- New projects should use modern logger categories
- DevContainer is now the recommended development method
- Package versioning changed to date-based format
For complete information, start with π DOCUMENTATION.md
Maintained by the AASDK community β’ Contribute β’ Report Issues