Skip to content

opencardev/aasdk

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AASDK - Android Auto Software Development Kit

Contributor Covenant Build Status Documentation

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 β€’ Contribute β€’ Report Issues

About

Library to build AndroidAuto headunit emulator

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 89.5%
  • CMake 5.2%
  • Shell 4.0%
  • Other 1.3%