当前位置: 首页 > news >正文

【Android车载系列】第5章 AOSP开发环境配置

1 硬件支持

建议空闲内存16G以上,同时硬盘400G以上
内存不够可以使用 Linux 的交换分区

2 VMware Workstation安装

https://download3.vmware.com/software/wkst/file/VMware-workstation-full-16.1.1-17801498.exe

2.1 Ubuntu镜像

http://mirrors.aliyun.com/ubuntu-releases/16.04/ubuntu-16.04.7-desktop-amd64.iso

2.2 Linux 的交换分区

2.2.1 Linux 的交换分区(swap)

  或者叫内存置换空间(swap space),是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。交换分区的作用是,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,也就是常说的 swap out 和 swap in。

2.2.2 查看空间大小

  可以提供free -m命令查看虚拟内存与交换空间大小或者 swapon -s

2.2.3 配置交换空间

1.停用交换文件

sudo swapoff /swapfile

2.删除文件

sudo rm /swapfile

3.新建swap空间,以20G为例

sudo fallocate -l 20G /swapfile
设置文件权限
sudo chmod 600 /swapfile
挂载
sudo mkswap /swapfile
激活启用
sudo swapon /swapfile

4.接着把交换信息写入系统配置,不然Ubuntu重启后以上配置swap空间工作得重新做。

打开配置文件
sudo vim /etc/fstab
在最后一行插入
/swapfile swap swap defaults 0 0

2.2.4 交换空间未使用

1.系统只有当虚拟内存不足才会启动Swap,比如系统默认内存只有6000KB时才会启用交换空间,但是此时系统可能已经卡死,无法启动swap,所以需要更改设置。

2.终端输入命令:

sudo vim /etc/sysctl.conf

3.在最后面添加如下语句(按i进入编辑模式,光标移到最后,插入语句)
vm.min_free_kbytes=1500000 #大致1.5G
保存退出(按ESC退出编辑模式,输入:wq保存退出)然后重启开机

以上配置的意思是,当系统内存不足1.5G时就启用交换空间,这是因为我分配给Ubuntu的内存为8G。而如果你虚拟机分配的内存是4G,那建议不要设置1.5G就启用交换空间,可以调小一些,比如调整为1G:
vm.min_free_kbytes=1000000

3 工具软件安装

3.1 安装git:

sudo apt install git

3.2 安装依赖工具

sudo apt install git-core libssl-dev  libffi-dev gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev libz-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

3.3 下载与安装Python3

3.3.1 打开下载目录

 cd Downloads

3.3.2 下载

wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz

3.3.3 解压Python3

tar xvf Python-3.7.1.tgz

3.3.4 编译与安装Python3

./configure     或指定路径  ./configure --prefix=/usr/local/python3.7sudo make install

3.4 软件版本管理工具

3.4.1 配置update-alternatives

sudo update-alternatives --install  /usr/bin/python python /usr/bin/python2.7 2
sudo update-alternatives --install  /usr/bin/python python /usr/local/bin/python3.7  3

3.4.2 选择Python版本

sudo update-alternatives --config python

4 AOSP源码下载

4.1 AOSP官方地址

https://source.android.google.cn/setup/build/downloading

4.2 中科大镜像

https://mirrors.ustc.edu.cn/help/aosp.html   

4.2.1 执行下面命令

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

下载:repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-12.1.0_r27

安卓版本列表: https://source.android.google.cn/docs/setup/about/build-numbers?hl=zh-cn#source-code-tags-and-builds

4.2.1.1 权限问题

执行:chmod 755 /home/jett/bin/repo

4.2.1.2 连接问题

如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的: REPO_URL = ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo’

4.2.1.3 SSL证书校验

如果提示无法进行SSL证书校验,执行:
git config --global http.sslverify false
git config --global https.sslverify false

4.2.1.4 git身份

如果出现git身份不存在:
git config --global user.email “jett@maniu.com”
git config --global user.name jett

4.2.2 执行:repo sync

4.2.2.1 同步过程

一段等待,大概十小时以上
在这里插入图片描述

4.2.2.2 错误处理

error: Unable to fully sync the tree.
error: Downloading network changes failed.
Try re-running with “-j1 --fail-fast” to exit at the first error.

处理方法:
repo sync -j1 --fail-fast

4.2.3 下载成功

repo sync has finished successfully.

4.3 清华镜像

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

5 编译 AOSP 代码

5.1 build

. build/envsetup.sh

5.2 lunch

lunch aosp_x86_64-eng(问题:模拟器镜像无法生成)
lunch sdk_x86_64 手机
lunch sdk_car_x86_64-userdebug 车载课程中选择的lunch sdk_x86_64 用于使用模拟器
在这里插入图片描述
在这里插入图片描述

5.3 make

在这里插入图片描述
编译完成(4个小时左右)
在这里插入图片描述

5.3.1 常见问题

5.3.1.1 磁盘空间不足

在这里插入图片描述
df -h 查看磁盘使用情况
在这里插入图片描述

5.3.1.2 内存不足问题

设置好交换空间一般就没问题了

5.4 emulator

5.4.1 打开模拟器

5.4.1.1 虚拟机嵌套虚拟机问题

在这里插入图片描述

windows下安装vmware里边嵌套kvm提示kvm不可用解决办法:
步骤:虚拟机-设置-处理器-勾选虚拟化Intel-确认

5.4.1.2 模拟器镜像无法生成

在这里插入图片描述

lunch sdk_x86_64
Lunch menu路径build/make/target/product/AndroidProducts.mk

5.4.1.3 编译后的模拟器路径

out/target/product/emulator_x86_64

5.4.2 日志查看

adb shelllogcat -c 
logcat
logcat -s TAG查找文件
find -name 文件名
查找文件内容:方法调用
grep "文件内容" ./ -rn打印调用栈
Log.i("jett","oncreate",new Exception());

6 android studio安装与源码导入

6.1 安装jdk

sudo apt install openjdk-9-jre-headless

在这里插入图片描述

6.2 安装as

6.2.1 下载

https://developer.android.google.cn/studioandroid-studio-2022.1.1.21-linux.tar.gz

6.2.2 回到源码目录

执行
make idegen -j4sudo development/tools/idegen/idegen.sh生成文件android.iml  &  android.ipr

6.2.3 导入源码前建议

AS的bin目录下,修改studio64.vmoptions增加内存

6.3 AS启动与源码导入

6.3.1 先进入bin目录

cd bin

6.3.2 执行

./studio.sh

6.3.3 AS下File->open->android.ipr

可导入android.iml中标记的全部源码

相关文章:

【Android车载系列】第5章 AOSP开发环境配置

1 硬件支持 建议空闲内存16G以上,同时硬盘400G以上 内存不够可以使用 Linux 的交换分区2 VMware Workstation安装 https://download3.vmware.com/software/wkst/file/VMware-workstation-full-16.1.1-17801498.exe2.1 Ubuntu镜像 http://mirrors.aliyun.com/ubun…...

个人时间管理网站—Git项目管理

🌟所属专栏:献给榕榕🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该专栏系为女友准备的,里面会不定时发一些讨好她的技术作品,感兴趣的小伙伴可以关注一下~👉文章简介…...

2023最新ChatGPT整理的40道Java高级面试题

2023 年最火的就是 ChatGPT 了,很多同事使用他完成一些代码上的智能提示,也有人使用它发了财《「用ChatGPT年入百万!」各博主发布生财之道,网友:答辩搬运工》、《“躺着就能赚大钱”?ChatGPT火了,有人早就动起坏脑筋》等。 最近我也使用 ChatGPT 写技术文章了,比如:《…...

单机分布式一体化是什么?真的是数据库的未来吗,OceanBase或将开启新的里程碑

一. 数据 我们先说说数据这个东西,这段时间的ChatGPT在全世界的爆火说明了一件事,数据是有用的,并且大量的数据如果有一个合适的LLM大规模语言模型训练之后,可以很高程度的完成很多意想不到的事情。 我们大多数的时候的注意力只…...

100天精通Python丨基础知识篇 —— 03、Python基础知识扫盲(第一个Python程序,13个小知识点)

文章目录🐜 1、Python 初体验Pycharm 第一个程序交互式编程第一个程序🐞 2、Python 引号🐔 3、Python 注释🦅 4、Python 保留字符🐯 5、Python 行和缩进🐨 6、Python 空行🐹 7、Python 输出&…...

springboot逍遥大药房管理系统

084-springboot逍遥大药房管理系统演示录像开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&a…...

ZYNQ中的GPIO与AXI GPIO

GPIO GPIO—一种外设,对器件进行观测和控制MIO—将来自PS外设和静态存储器接口的访问多路复用到PS引脚上处理器控制外设的方法—通过一组寄存器包括状态寄存器和控制寄存器,这些寄存器都是有地址的,通过这些寄存器的读写进行外设的控制sessi…...

接口导入功能

1.接口api export function import(param) { return fetch({ url: XXX.import, method: POST, headers: { Content-Type: multipart/form-data; }, data: param }) } 2.页面vue 和 js逻辑 <el-button :loading"disable&qu…...

网络安全知识点总结 期末总结

1、信息安全从总体上可以分成5个层次&#xff0c;密码技术 是信息安全中研究的关键点。 2、握手协议 用于客户机与服务器建立起安全连接之前交换一系列信息的安全信道。 3、仅设立防火墙系统&#xff0c;而没有 安全策略 &#xff0c;防火墙就形同虚设。 4、应用代理防火墙 …...

linux挂载远程目录

服务端操作 # 1、安装NFS程序 yum -y install nfs* rpcbind,在centos6以前自带的yum源中为portmap。 使用yum安装nfs时会下载依赖&#xff0c;因此只要下载nfs即可&#xff0c;无需再下载rpcbind. # 2、查看是否安装了nfs与rpcbind rpm -qa | grep nfs rpm -qa | grep rpc…...

ChatGPT—初识

ChatGPT初识 由于ChatGPT 注册相关的文章被平台限制了&#xff0c;所以有注册相关的问题可以私聊&#xff0c;或者可以代注册 Chat GPT是一款基于GPT模型的对话型AI模型&#xff0c;能够模拟真实的对话风格和行为方式&#xff0c;让人与AI的交互变得更加自然顺畅。下面将从Chat…...

【ArcGIS Pro二次开发】(18):地理处理工具类【Geoprocessing】补遗

ArcGIS Pro SDK 3.0中的Geoprocessing类是用于执行地理处理工具的核心类。地理处理工具是用于执行空间分析、数据转换、数据管理等任务的工具集&#xff0c;包括常见的空间分析工具、栅格处理工具、矢量处理工具、地图制图工具等。 之前有简单记录了下Geoprocessing工具的用法…...

国产芯片方案——红外测温体温计方案

红外测温体温计采用了热电堆式&#xff0c;利用塞贝克效应&#xff0c;将收集到的红外线光信号转化为电信号&#xff0c;再经过放大等处理&#xff0c;按内部的算法校正后再显示屏幕上输出具体温度值&#xff0c;能快速准确地测量人体体温。红外测温体温计广泛应用于医疗卫生、…...

详解ChatGPT的免费总结插件Glarity

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

RK3588平台开发系列讲解(NPU篇)NPU调试方法

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、日志等级二、NPU 支持查询设置项沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们一起来看一下NPU的调试方法。 一、日志等级 NPU 的运行库会根据开发板上的系统环境变量输出一些日志信息或者生成…...

基于微信小程序+爬虫制作一个表情包小程序

跟朋友聊天斗图失败气急败坏的我选择直接制作一个爬虫表情包小程序&#xff0c;从源头解决问题&#xff0c;从此再也不用担心在斗图中落入下风 精彩专栏持续更新↓↓↓ 微信小程序实战开发专栏 一、API1.1 项目创建1.2 图片爬虫帮助类1.3 测试窗体1.4 接口封装二、小程序2.1 项…...

TS常用数据类型(TypeScript常用数据类型,ts常用数据类型和js常用数据类型的区别)

简述&#xff1a;TS全称TypeScript&#xff0c;是一门弱类型的语言&#xff0c;可以理解为是 JavaScript 的扩展语法&#xff0c;因此我们可以在 ts 中继续写js代码&#xff0c;且不会报错&#xff0c;而且TypeScript 又叫做静态的JavaScript&#xff0c;可称为静态类型语言&am…...

关于Numpy的特殊符号@和矩阵运算

符号之谜 在Numpy中&#xff0c;看到了符号&#xff0c;但是无论是google搜索或者baidu搜索&#xff0c;由于符号是一个特殊字符&#xff0c;所以很难检索到答案。 其实很简单&#xff0c;他就是Numpy库中的一个操作符&#xff0c;在numpy库的说明中&#xff0c;落在numpy.mat…...

动态版通讯录——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是动态版通讯录啦&#xff0c;其实之前&#xff0c;我就已经写过静态版的通讯录了&#xff0c;只是存在着一些问题&#xff0c;具体细节可以详细看看我的静态版通讯录&#xff0c;好了&#xff0c;话不多说&…...

SpringBoot 将PDF转成图片或World

SpringBoot 将PDF转成图片或World 准备工作Apache PDFBox将PDF转成一张图片将PDF转成多张图片将PDF转成其他文件格式总结SpringBoot 是一款非常流行的 Java Web 开发框架,可以用来构建各种 Web 应用程序。在本篇博客中,我们将介绍如何使用 SpringBoot 将 PDF 转换成图片或其他…...

免费开源甘特图工具GanttProject:从任务混乱到清晰可视化的完整解决方案

免费开源甘特图工具GanttProject&#xff1a;从任务混乱到清晰可视化的完整解决方案 【免费下载链接】ganttproject Official GanttProject repository 项目地址: https://gitcode.com/gh_mirrors/ga/ganttproject 还在为项目管理中的任务混乱、进度模糊而烦恼吗&#x…...

Python数据分析项目实战(044)——Pandas数据导出常用方法

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl to_csv() 作用:将DataFrame数据导出为CSV(逗号分隔值)格式文件,是最常用的数据导出格式之一。 import pandas as pddata = {姓名: [张三, 李四<...

Wan2.2-I2V-A14B持续集成/持续部署(CI/CD)流水线搭建

Wan2.2-I2V-A14B持续集成/持续部署&#xff08;CI/CD&#xff09;流水线搭建 1. 引言 在AI模型服务开发中&#xff0c;频繁的迭代更新是常态。每次代码修改后手动执行测试、构建和部署不仅效率低下&#xff0c;还容易出错。本文将带你从零开始&#xff0c;为Wan2.2-I2V-A14B模…...

QMCDecode:3分钟快速解锁QQ音乐加密文件,实现跨平台音乐自由

QMCDecode&#xff1a;3分钟快速解锁QQ音乐加密文件&#xff0c;实现跨平台音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录…...

VideoAgentTrek-ScreenFilter模型压缩与量化教程:在边缘设备上实现轻量部署

VideoAgentTrek-ScreenFilter模型压缩与量化教程&#xff1a;在边缘设备上实现轻量部署 想让一个原本需要强大GPU才能流畅运行的视频分析模型&#xff0c;在树莓派或者Jetson Nano这类小巧的边缘设备上也能跑起来吗&#xff1f;这听起来像是个不可能的任务&#xff0c;但通过模…...

Qwen3-VL-2B实战:快速搭建一个能“看懂”图片的智能聊天机器人

Qwen3-VL-2B实战&#xff1a;快速搭建一个能"看懂"图片的智能聊天机器人 1. 项目介绍与核心能力 1.1 什么是视觉语言模型 视觉语言模型&#xff08;Vision-Language Model&#xff09;是一种能够同时理解图像和文本的AI技术。不同于传统聊天机器人只能处理文字&am…...

OpenClaw自动化测试:Qwen3.5-9B-AWQ-4bit驱动UI截图比对

OpenClaw自动化测试&#xff1a;Qwen3.5-9B-AWQ-4bit驱动UI截图比对 1. 为什么需要自动化UI测试 作为个人开发者&#xff0c;每次前端代码修改后最头疼的就是手动检查各个页面的UI变化。传统做法要么是人工逐页比对&#xff0c;要么依赖复杂的测试框架配置。直到我发现OpenCl…...

从K8S配置到前端实现:用Vue3+Codemirror打造专业级YAML编辑器全流程

从K8S配置到前端实现&#xff1a;用Vue3Codemirror打造专业级YAML编辑器全流程 在云原生技术栈中&#xff0c;YAML文件如同空气般无处不在——从Kubernetes集群部署到CI/CD流水线配置&#xff0c;这种人类可读的数据序列化格式已成为基础设施即代码的核心载体。但当我们面对动辄…...

Wan2.2-I2V-A14B Java开发集成指南:SpringBoot后端服务调用

Wan2.2-I2V-A14B Java开发集成指南&#xff1a;SpringBoot后端服务调用 1. 引言 如果你是一名Java后端开发者&#xff0c;正考虑将AI视频生成能力集成到现有系统中&#xff0c;这篇教程就是为你准备的。我们将手把手教你如何在SpringBoot项目中调用私有化部署的Wan2.2-I2V-A1…...

LangChain串联DeepSeek时,如何用自定义OutputParser解决‘思考污染’问题?

LangChain串联DeepSeek时如何用自定义OutputParser解决"思考污染"问题 当我们在LangChain框架中串联使用具备"思考过程"输出的推理模型&#xff08;如DeepSeek&#xff09;时&#xff0c;经常会遇到一个棘手的问题&#xff1a;前序节点的思考标签会污染后续…...