2. AUTOSAR AP概述

说实话,很多初学者在AUTOSAR Adaptive平台上一开始就卡住了。不是代码看不懂,而是环境没搭好。我见过太多人花了两三天装环境,结果编译第一个示例就报错。所以这一章,咱们把地基打牢。

我个人习惯用Ubuntu 20.04 LTS作为开发系统。为什么选它?因为AOSP官方和AUTOSAR Adaptive的参考实现,大多在这个版本上验证过。你非要用22.04也行,但有些依赖包的版本会变,到时候踩坑别怪我没提醒你。

核心目标: 搭建一个能编译、运行AUTOSAR Adaptive平台应用的完整开发环境。

2.1 安装Ubuntu虚拟机

如果你用的是Windows,别直接在物理机上装双系统。用虚拟机,快照功能太香了。我每次做重大配置变更前,都会打个快照。万一搞崩了,三秒钟恢复。

推荐工具:VMware Workstation Pro 或 VirtualBox。我个人偏向VMware,性能损耗小,而且和WSL2的兼容性更好。

安装步骤其实很简单,但有几个关键点要注意:

  1. 内存分配: 至少8GB,建议16GB。编译AOSP或Adaptive平台时,内存不够直接OOM。
  2. 磁盘空间: 至少80GB,建议120GB。AOSP源码拉下来就30多GB,编译产物再翻一倍。
  3. CPU核心: 至少4核,越多越好。编译是并行任务,核心数直接决定你等多久。
  4. 网络模式: 选NAT模式,方便共享主机的网络连接。
小技巧: 安装Ubuntu时,勾选“为图形或无线硬件安装第三方软件”。这能帮你省掉装显卡驱动的麻烦。

2.2 必备工具链安装

环境搭好之后,第一件事就是装工具链。别急着拉代码,先把这些基础工具装好。

2.2.1 CMake

CMake是AUTOSAR Adaptive平台的标准构建系统。说白了,它负责生成Makefile,然后让GCC去编译。

安装命令很简单:

sudo apt update
sudo apt install cmake
cmake --version  # 验证安装,版本需 ≥ 3.16

我曾经在某个项目里用了CMake 3.10,结果死活编译不过一个AUTOSAR Adaptive的示例。查了半天,发现是CMake策略版本太旧,不支持某些新语法。所以,版本一定要够新。

2.2.2 GCC/G++

编译器这块,AUTOSAR Adaptive平台要求支持C++17。GCC 9以上都行。

sudo apt install build-essential
gcc --version
g++ --version

build-essential这个包会把GCC、G++、make、libc-dev等基础工具一次性装好。省心。

2.2.3 Python3

Python3在AUTOSAR Adaptive平台里主要用来跑脚本。比如代码生成器、测试框架、配置工具等。

sudo apt install python3 python3-pip python3-venv
python3 --version  # 确保 ≥ 3.8

我建议你装一个python3-venv。为什么?因为不同项目可能依赖不同版本的Python包。用虚拟环境隔离,避免冲突。我在一个项目里同时维护三个Adaptive平台版本,全靠venv切换。

2.2.4 其他依赖

还有一些库,虽然不是AUTOSAR直接要求的,但编译过程中大概率会用到:

sudo apt install libssl-dev libcurl4-openssl-dev libjsoncpp-dev libyaml-cpp-dev
工具/库 版本要求 用途
CMake ≥ 3.16 构建系统配置
GCC/G++ ≥ 9.0 C++17编译
Python3 ≥ 3.8 脚本与工具链
OpenSSL ≥ 1.1.1 安全通信与证书
libcurl ≥ 7.68 HTTP/REST通信

2.3 AOSP基础环境配置

AUTOSAR Adaptive平台和AOSP(Android Open Source Project)有什么关系?其实,Adaptive平台的应用层通信、进程管理、日志系统,很多概念和AOSP是相通的。而且,有些AUTOSAR Adaptive的参考实现直接跑在AOSP的底层框架上。

配置AOSP基础环境,主要是为了后续能编译和运行那些基于AOSP的Adaptive平台示例。

2.3.1 安装Repo工具

Repo是Google用来管理多Git仓库的工具。AOSP源码就是由几百个Git仓库组成的。

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc

2.3.2 配置Java环境

虽然AUTOSAR Adaptive平台本身不依赖Java,但AOSP的编译系统需要。我建议装OpenJDK 11。

sudo apt install openjdk-11-jdk
java -version

2.3.3 安装AOSP编译依赖

AOSP官方提供了一个脚本,可以一键安装所有依赖:

sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev \
  gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev \
  x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils \
  xsltproc unzip fontconfig
注意: 如果你用的是Ubuntu 22.04,libncurses5这个包可能已经改名了。需要装libncurses5-dev或者libncurses-dev。具体看你的系统版本。

2.4 Git版本管理

Git是每个嵌入式工程师的必修课。在AUTOSAR Adaptive平台开发中,Git更是核心工具。因为Adaptive平台的代码库通常由多个组件组成,每个组件都有自己的Git仓库。

2.4.1 基础配置

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.editor vim
git config --global merge.tool vimdiff

这些配置看起来简单,但很重要。我见过有人提交代码时,作者信息写的是“root”,结果CI系统直接拒绝合并。嗯,这种低级错误我也犯过。

2.4.2 分支策略

在AUTOSAR Adaptive项目中,我推荐用Git Flow或者Trunk-Based Development。我个人更倾向Trunk-Based,因为Adaptive平台迭代快,频繁合并能减少冲突。

策略 适用场景 优点 缺点
Git Flow 大型团队、多版本并行 分支清晰,发布可控 分支多,合并复杂
Trunk-Based 小团队、快速迭代 冲突少,集成快 对CI要求高

2.4.3 常用操作

这里列几个我在项目中每天都会用到的Git命令:

# 拉取最新代码
git pull --rebase

# 创建功能分支
git checkout -b feature/my-feature

# 提交代码
git add .
git commit -m "feat: add adaptive platform communication module"

# 合并主干
git checkout main
git merge feature/my-feature

# 查看提交历史
git log --oneline --graph --all
建议: 提交信息用Conventional Commits规范。比如feat、fix、docs、refactor。这样生成CHANGELOG时,自动化工具能直接解析。

2.5 环境验证

所有工具装完后,咱们写一个简单的C++程序,验证整个工具链是否正常工作。

// hello_adaptive.cpp
#include <iostream>
#include <string>

int main() {
    std::string msg = "Hello, AUTOSAR Adaptive!";
    std::cout << msg << std::endl;
    return 0;
}
# CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(HelloAdaptive)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(hello_adaptive hello_adaptive.cpp)

编译并运行:

mkdir build && cd build
cmake ..
make
./hello_adaptive

如果看到输出“Hello, AUTOSAR Adaptive!”,恭喜你,环境搭建成功。

验证清单:
  • CMake ≥ 3.16
  • GCC ≥ 9.0,支持C++17
  • Python3 ≥ 3.8
  • Git配置正确
  • 能编译并运行C++17程序

2.6 本章知识体系

下面这张图,帮你理清本章的核心逻辑:

开发环境搭建知识体系 开发环境搭建知识体系 开发环境搭建 Ubuntu虚拟机 必备工具链 AOSP基础环境 Git版本管理 VMware/VBox 快照管理 CMake GCC/G++ Python3 Repo工具 Java/依赖 分支策略 提交规范 核心原则 先搭虚拟机 → 再装工具链 → 配置AOSP → 用Git管理代码

这张图把本章的四个核心模块串起来了。你按这个顺序走,基本不会出错。

避坑提醒: 我曾经在配置AOSP环境时,直接跳过了Java安装。结果编译到一半报错,提示找不到javac。回头一看,浪费了半小时。所以,每一步都别省。