Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

opencardev/aasdk

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

217 Commits
217 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AASDK - Android Auto Software Development Kit

Contributor Covenant Build Status Documentation CodSpeed

Overview

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.

Key Features ✨

  • 🚗 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

🚀 Quick Start

Option 1: DevContainers (Recommended)

Prerequisites:

Get Started in 3 Steps:

  1. Open VS Code in this directory
  2. Press Ctrl+Shift+P → "Dev Containers: Reopen in Container"
  3. Build: ./build.sh debug

Option 2: Native Build

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)

📚 Comprehensive Documentation

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

🏗️ Supported Architectures

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

🔌 Protocol Support

Transport Layers

  • USB Transport - High-speed wired connection with hotplug support
  • TCP Transport - Wireless AndroidAuto over WiFi
  • SSL Encryption - Secure communication channel

Communication Channels

  • 🎵 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

🛠️ Build Options

Quick Build Commands

# 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

VS Code Integration

Use integrated tasks for seamless development:

  • Ctrl+Shift+P → "Tasks: Run Task"
  • Select: DevContainer: Build Debug (Quick)

DevContainer Build (Cross-Platform)

# 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

🧪 Testing & Validation

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 Distribution

Available Packages

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

Version Format

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)

🔍 Troubleshooting

Common Issues Quick Reference

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

Getting Help

  1. Check Documentation: Start with DOCUMENTATION.md
  2. Search Issues: GitHub Issues
  3. Ask Community: GitHub Discussions
  4. Report Bugs: Use issue templates with diagnostic info

🤝 Contributing

We welcome contributions! Here's how to get started:

  1. Read the Guide: Check CONTRIBUTING.md
  2. Set Up Environment: Use DevContainer for consistent setup
  3. Follow Standards: Use modern logger categories and coding standards
  4. Test Thoroughly: Run full test suite before submitting PRs

Development Workflow

# 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

📄 License

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.

🙏 Acknowledgments

Core Dependencies

Community Projects

  • OpenDsh - Android Auto headunit using AASDK
  • Crankshaft - Raspberry Pi Android Auto solution

🚀 Recent Updates

Version 2025.07.30+ Features

  • 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

Migration Notes

  • 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 • ContributeReport Issues

About

Library to build AndroidAuto headunit emulator

Resources

Code of conduct

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.