Android P Automotive 基于Ubuntu 18.04 && HP Pavilion笔记本环境搭建(持续更新)

本文详细介绍了一台HPPavilion笔记本上进行AndroidPAutomotive环境搭建的过程,包括Ubuntu18.04安装及常见问题解决,软件源更新,依赖软件安装等内容。

背景介绍:

本文的撰写背景就是在一台HP Pavilion笔记本上进行Android P Automotive 环境搭建遇到的问题以及相应的解决方案,并提供一些开发环境搭建中的建议和建议的理由。

对于入门选手来说,我觉得,建议固然很重要,但是为什么这样建议似乎更重要。如果知其然不知其所以然,就会造成了开发过程中存在畏首畏脚的心理,影响开发效率。Android 开发道路曲折蜿蜒,愿读此文诸君,能在评论后写上一句干货满满,余愿足矣,当然了,我们是为了解决问题,而不是制造问题再解决问题。所以在折腾之前,保证自己有一个工作正常的Windows环境用来查询遇到的问题,问题的解决都穿插在整个环境搭建过程中:

小生的笔记本电脑:

HP Pavilion, Intel i7-7700HQ CPU

系统内存:8GB

硬盘:128G DDR && 1T机械硬盘

显卡:GeForce GTX1050

本文主要涉及以下两个方面:

  1. Ubuntu 18.04 安装
  2. Android P Automotive的软件环境搭建

Ubuntu 18.04 安装过程中碰到的问题:

  1. 温度过高导致安装中断问题:
  2. 开机输入密码后,界面卡住问题
  3. 无法进入grup界面问题。
  4. Nvidia显卡驱动安装问题。
  5. sogou输入法安装问题。

Android P Automotive的软件环境搭建碰到的问题

  1. 软件源更新
  2. 依赖软件安装
  3. Android环境编译和重要的开发目录介绍
  4. make的问题解决
  5. 必要开发软件安装
  6. git和repo的开发用场景问题。
  7. fastboot 和 ADB的使用问题。

参考链接(侵删):

NVIDIA 显卡安装

https://www.cnblogs.com/devilmaycry812839668/p/6867780.html

正文如下:

1.Ubuntu镜像从Ubuntu官网上下载,注意需要是LTS版本,Google对Android O的推荐Ubuntu版本为16.04 LTS。

----小生在16.04 LTS上测试过Android O/P/P AutoMotive 版本,18.04.2 LTS上测试过Android P Automotive。

 

2.校验Ubuntu镜像,保证镜像文件没有损毁,Windows - PC端校验工具可以采用好压,一次校验,多个结果。

 

3.采用主流的品牌U盘,使用UtralSO等软件,制作U盘启动盘。

----这里使用主流的U盘是为了让PC识别,另一方面主流U盘散热性能也好,不然可能出现Ubuntu安装到一半,系统提示复制文件异常,而导致安装失败。这个散热问题比较奇葩,特别是对一些游戏本或者老式的笔记本,也可以增加外置风扇散热,比较看运气。

 

4.笔记本电源上电,按下特定按键进入 BIOS,选择启动盘:选中U盘启动,开始Ubuntu安装。

----小生的笔记本是ESC按键,这个按键定义不太好,因为会和启动后的进入GRUP的按键相同,按键按下时机很重要(恶心)。

 

5.Ubuntu 安装过程的注意事项有两个:分区和系统显示语言

----小生的分区其实很简单因为有两个盘,就把Ubuntu安装在SSD上,主要是SSD的分区

     boot分区:1G

     swap分区:10G--这里的swap分区大小一直是个争议不休的问题,这个和Ubuntu的机制有关,了解不多。

     /分区110G

     /home:机械硬盘1T。

----Android O的整个工程编译出来的硬盘空间超过120G,Android P的硬盘空间超过140G.编译中间所需要的硬盘空间还要超过此空间大小,加上git所用的本地目录(AOSP中自带的.git目录>20G),整个工程预留空间超过150G,但我的SSD只有128G,因此采用此方案。如果读者的PC SSD足够大,那么极力推荐你将AOSP,Ubuntu都安装在SSD上,因为AOSP编译过程中,在后面的阶段主要涉及到大量的硬盘读写,使用SSD可以大量节省时间。因为Android O/P 的编译生成物主要在out目录,此目录大小>90G,可想而知整个AOSP的编译过程中需要多少的硬盘读写。

----系统显示语言强烈建议用英语,因为命令行里安装软件的时候,特别是中文目录,还得切输入法。

 

6.Ubuntu安装后重启

--有的Nvidia独立显卡的PC,登录账户后就卡住,这个时候需要开机的时候修改grub文件,让系统先正常启动起来解决。开机跳过BIOS(这里就解释了第四步中为什么说这个按键恶心)后按esc等按键进入grub界面,这里有的笔记本的按键不太一样,也有长按shift按键的。然后点击"e"进入grub编辑,在"quiet splash"后面添加"nomodeset",然后保存启动Ubuntu,这个时候就可以正常进入Ubuntu中。

7.进入Ubuntu中后,修改/etc/default/grub文件,同步骤6,保证每次都可以进入Ubuntu桌面;

----这时你通过Setting->Details->About可以看到PC信息中的Graphics 并不是你PC自带的NVIDIA显卡,可能是Intel的核显或者LLVM之类的信息。

8.安装NVIDIA显卡驱动:禁用nouveau && 通过ubuntu-drivers devices命令查找NVIDIA驱动

----NVIDA驱动查找的时候,也不一定就是recommended的就一定适合你的PC,反正我安装recommended的驱动并没有正常,具体步骤可以参见本文上部的参考链接。

9.增加软件源:清华大学,阿里,163等

--Android的编译环境还是大量依赖一些应用,编译一次AOSP需要2~4h,有些应用只有在使用的时候会报错,所以先添加软件源并安装相应的软件。

10.sogou输入法

sogou输入法依赖fcitx,直接在Ubuntu中搜索fcitx安装后,然后下载sogou的deb包安装,然后配置fcitx的输入法添加中文sogou即可。

 

 

 

 

 

 

 

 

 

 

 

 

### 开发环境准备 在基于Android Automotive平台开发适用于本田车机系统的应用程序时,首先需要搭建一个符合Android Automotive标准的开发环境Android Automotive是谷歌为车载系统设计的完整嵌入式操作系统,支持原生应用开发[^1]。开发者可以使用Android Studio作为主要开发工具,配置相应的SDK和模拟器,以实现对车载环境的适配与测试。 本田作为一家注重系统集成与安全性的汽车制造商,其车机系统的开发需遵循严格的行业标准,包括ISO 26262功能安全规范和ASPICE流程模型。因此,在开发初期,应确保项目结构、代码规范与安全要求相匹配。 ### 应用架构设计 Android Automotive平台支持两种主要的应用类型:**系统级应用**(System Apps)和**用户级应用**(User Apps)。系统级应用通常由OEM厂商预装,具备更高的系统权限,可访问车辆总线(如CAN)和传感器数据;用户级应用则通过Google Play商店分发,适合开发导航、音乐、语音助手等面向用户体验的功能。 在设计本田车机应用时,建议采用模块化架构,利用Android的Service组件实现后台任务处理,例如车辆状态监控、远程诊断等功能。同时,可借助Android Auto和Android Automotive OS的API接口,实现手机与车机的无缝互联。 例如,一个基于Android Automotive的车辆状态监控服务可以如下实现: ```java public class VehicleStatusService extends Service { private static final String TAG = "VehicleStatusService"; @Override public void onCreate() { super.onCreate(); // 初始化车辆数据监听模块 VehicleDataListener vehicleDataListener = new VehicleDataListener(); vehicleDataListener.startListening(); } @Override public IBinder onBind(Intent intent) { return null; } private class VehicleDataListener { void startListening() { // 模拟从车辆总线获取数据 new Handler(Looper.getMainLooper()).postDelayed(() -> { Log.d(TAG, "Vehicle Speed: 60 km/h"); Log.d(TAG, "Battery Level: 85%"); }, 1000); } } } ``` ### 与车辆系统的集成 Android Automotive平台提供了Vehicle HAL(硬件抽象层)接口,用于与车辆底层系统(如ECU、BCM)进行交互。开发者可以通过实现`IVehicle`接口,访问车辆传感器数据、控制车门锁、空调系统等功能。 本田车机系统通常采用CAN总线协议进行通信,因此在集成过程中需要确保Android系统能够通过车载网关访问CAN数据。可以使用JNI(Java Native Interface)调用底层C/C++代码,实现CAN数据的解析与处理。 例如,通过Vehicle HAL获取车速信息的代码片段如下: ```java IVehicle vehicle = IVehicle.getService(); vehicle.get(VehiclePropertyGroup.PER_DRIVE, VehiclePropertyType.INT32, 1001, (errorCode, value) -> { if (errorCode == VehicleHalStatusCode.OK) { int speed = value.int32Values.get(0); Log.d("VehicleSpeed", "Current Speed: " + speed + " km/h"); } }); ``` ### 安全与合规性要求 由于车机系统涉及车辆控制与用户安全,所有基于Android Automotive开发的应用程序必须满足ISO 26262功能安全标准。本田在车机系统开发中通常采用ASPICE流程模型进行软件开发管理,确保需求可追溯、测试覆盖全面。 在开发过程中,应使用符合ASPICE标准的需求管理工具(如IBM DOORS)进行需求追踪,并通过静态代码分析工具(如Polyspace、Coverity)确保代码质量。此外,所有涉及车辆控制的代码应通过MISRA C/C++或Java编码规范的静态检查。 ### 用户界面设计与交互优化 针对本田车机系统的用户界面设计,建议采用Material Design 3风格,确保界面简洁、操作直观。由于车载环境的特殊性,UI应避免复杂交互,优先使用语音控制与手势识别。 Android Automotive提供了Car App Library,开发者可以利用该库构建符合车载交互逻辑的UI组件,例如: ```xml <androidx.car.app:CarAppWidget android:id="@+id/car_widget" android:layout_width="match_parent" android:layout_height="wrap_content" app:widgetType="actionStrip" /> ``` ### OTA升级与远程管理 本田车机系统支持OTA(Over-The-Air)升级,开发者应设计支持远程更新的应用架构。Android Automotive平台提供了UpdateEngine服务,用于实现系统级OTA更新。对于应用程序的更新,可结合Google Play Store或OEM自建的应用商店进行分发。 在实现OTA功能时,建议采用差分更新技术,减少更新包体积,并确保更新过程具备回滚机制,以防止升级失败导致系统不可用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值