Skip to content

opencardev/aasdk

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

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

Packages

 
 
 

Contributors

Languages

  • C++ 85.7%
  • CMake 9.2%
  • Shell 3.4%
  • Other 1.7%