Ubuntu 20.04.5 LTS 编译 Android T(qcm8550 or rk3588)环境配置

Ubuntu 20.04.5 LTS 编译 Android T(qcm8550 or rk3588)环境配置:

参考文档:
https://source.android.google.cn/docs/setup/start?hl=zh-cn Android系统开发指导
https://developer.android.google.cn/studio/run/device?hl=ru USB 调试配置
https://blog.csdn.net/xaioxaiobai/article/details/130282945 编译时报Clang SA is not enabled问题解决

ubuntu安装相关配置:
bash-completion: 点击tab时能命令补全。
meld: 文本比较工具,用于对比两个文件或目录的不同之处。
minicom: 串口调试工具
scrcpy: 通过该工具可以投屏android设备到电脑上。
gitk: 图形化的git工具。

sudo apt-get install bash-completion meld minicom scrcpy gitk
sudo dpkg -i google-chrome-stable_current_amd64.deb

1.使用 apt-get 安装编译依赖库:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib tofrodos
sudo apt-get install python-markdown libxml2-utils xsltproc vim cgpt samba libxml-simple-perl libssl-devsudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfigsudo apt install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 libssl-dev libswitch-perlsudo apt-get install uuid-devsudo apt install libtinfo5 libncurses*./scripts/fit-core.sh: line 611: fdtget: command not found
sudo apt install device-tree-compilersudo apt install libxml-simple-perl
sudo apt install libxml-sax-base-perl要解决lz4命令有两种方法:
官方提到可以先编译Android下面的lz4并替换系统的lz4(这一步要在下载SDK后方可操作):
$ mmm external/lz4/ 
$ sudo cp /usr/bin/lz4 /usr/bin/lz4.org # 备份
$ sudo cp out/host/linux-x86/bin/lz4 /usr/bin/lz4 # 替换系统原有lz4直接从GitHub下载lz4最新源代码编译:
$ git clone https://github.com/lz4/lz4.git
$ make
$ sudo make install

2.使用 apt-get 安装 JDK:

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdksudo apt install openjdk-11-jdk若同时安装了 JDK8 和 JDK11,可以使用下面的命令选择 JDK11:
sudo update-alternatives --config java使用以下命令查看是否正确选择了JDK1:
java -version

3.安装Python

//sudo add-apt-repository ppa:deadsnakes/ppa
//sudo apt install python3.9
//sudo update-alternatives --list pythonsudo ln -s /usr/bin/python3 /usr/bin/python
//sudo ln -s /usr/bin/python2 /usr/bin/python

4.配置git

git config --global user.email myname@xxx.com
git config --global user.name mynamegit commit命令的默认编辑器修改:
git commit命令执行后,会进入GUN nano编辑器。
现在把git commit的编辑器改回到vim
git config --global core.editor vim
或
编辑~/.gitconfig文件,在core中添加editor = vim

5.代码review网址:Gerrit Codes Reviews:
192.168.1.111:8086 // 公司内网搭建的

6.在线看代码:OpenGrok
http://192.168.1.111:8088/source // 公司内网搭建的

7.添加SSH key:

本地电脑输入:
ssh-keygen -t rsa
将 .ssh/id_rsa.pub中的内容全部复制到gerrit网址中测试key是否添加成功,本地电脑输入:
ssh username@192.168.1.111 -p 29418gerrit:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
or
Ubuntu 24.04 LST 的ssh-key用ed25519
ssh-keygen -t ed25519
cat .ssh/id_ed25519.pubssh myname@192.168.1.111 -p 29418

8.配置repo

mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

9.配置USB和fastboot,adb

下载Android Studio,然后打开-> File -> Settings -> Android SDK -> SDK Platforms和SDK Tools
安装相关选项。
gedit ~/.bashrc &
# my config start
export ANDROID_HOME=/home/myname/Android/Sdk
export PATH=$PATH:~/bin:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools#export LC_ALL=C
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
export HISTTIMEFORMAT="%F %T "
# my config end配置 USB 访问权限 针对开发设置设备
sudo usermod -aG plugdev $LOGNAME
apt-get install android-sdk-platform-tools-common
重启电脑。

10. 编译Android系统

source build/envsetup.sh
lunch xxx-userdebug
make
不同的平台可能不一样。具体根据厂商给的文档进行编译。

11. framework层代码编译:

需要先全编译android系统
source build/envsetup.sh
lunch xxx-userdebugmake framework && make framework-resmake framework && make framework-minus-apex && make framework-res && make servicesmake update-api && make framework && make framework-minus-apex && make framework-res && make services

12. 编译Error和解决方法

编译qcm8550 Android T代码是报如下错误
参考文档:
https://blog.csdn.net/xaioxaiobai/article/details/130282945 
编译时报Clang SA is not enabled问题解决编译Error二:FAILED: out/soong/build.ninja
cd "$(dirname "out/host/linux-x86/bin/soong_build")" && BUILDER="$PWD/$(basename "out/host/linux-x86/bin/soong_build")" && cd / &&  "$BUILDER"     --top "$TOP"     --soong_out "out/soong"     --out "out"     -o out/soong/build.ninja --globListDir build --globFile out/soong/globs-build.ninja -t -l out/.module_paths/Android.bp.list --available_env out/soong/soong.environment.available --used_env out/soong/soong.environment.used.build Android.bp
Clang SA is not enabled
15:55:09 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.
原因是:我的swap交换分区是2G比较小,所以,需要把swap改大一些。
我的电脑是32G内存,所以,我把swap改大到了32G。
解决方法:
$ sudo swapoff /swapfile
$ sudo swapon --show
$ sudo rm -rf /swapfile
$ sudo fallocate -l 32G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
正在设置交换空间版本 1,大小 = 32 GiB (34359734272  个字节)
无标签, UUID=7d042ef3-c38a-4b9b-8e76-32117b192450
$ sudo swapon /swapfile
$ sudo swapon --show
NAME      TYPE SIZE USED PRIO
/swapfile file  32G   0B   -2
$ free -h总计         已用        空闲      共享    缓冲/缓存    可用
内存:        31Gi       3.7Gi        24Gi        62Mi       3.1Gi        26Gi
交换:        31Gi          0B        31Gi$ cat /etc/fstab // 查看是否有下面配置。固化分区,即开机后也能正常
/swapfile                                 none            swap    sw              0       0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux之存储桶minio单机安装和使用简介

一、minio简介 MinIO 是一个高性能的分布式对象存储系统,主要用于存储非结构化数据,例如照片、视频、备份和日志文件。它是开源的,基于 Go 语言开发,具有高度可扩展性和高可用性,能够在私有云、公有云和边缘环境中部署…

20240725项目的maven环境报红-重新配置maven

1.在编辑器里面打开项目,导入源码 (1)找到项目的地址C:\Users\zzz\IdeaProjects\datasys,然后右击用idea编辑器打开。 (2)idea中上菜单栏打开open,然后输入file,选择源代码文件 2.…

LabVIEW放大器自动测量系统

开发了一个基于LabVIEW平台的多路前置放大器自动测量系统的开发与实施。该系统集成了硬件控制与软件编程,能够实现放大器各项性能指标的快速自动测量,有效提高了测试的精确性和效率。系统设计采用了虚拟仪器技术,结合了先进的测量与控制策略&…

.net core 外观者设计模式 实现,多种支付选择

1&#xff0c;接口 /// <summary>/// Web页面支付/// </summary>public interface IWebPagePay{public WebPagePayResult CreatePay(string productName, string orderSn, string totalPrice);}2&#xff0c;实现接口 实现阿里支付 public class AliPagePay : IWe…

Linux的TERM环境变量

程序或者脚本驱动登录到Linux系统之后。执行命令或者脚本&#xff0c;其返回值中往往出现格式异常。原因则在于虚拟终端类型的高级特性&#xff0c;例如&#xff1a;“颜色、高亮、移动光标”等。那么&#xff0c;是否禁掉这些高级特性呢&#xff1f;可以选择dumb类型&#xff…

丹东纵横文化传媒:创新引领,广告服务再升级

近日,丹东市振兴区的丹东纵横文化传媒有限公司再次传来振奋人心的消息,这家以互联网和相关服务为主的新兴企业,在广告设计与传播领域实现了重大突破,进一步巩固了其在行业内的领先地位。 【广告服务全面升级,引领市场新风尚】 据丹东纵横文化传媒有限公司最新发布的信息显示,公…

掌握AJAX技术:从基础到实战

文章目录 **引言****1. 什么是AJAX&#xff1f;****2. AJAX的工作原理**AJAX 示例使用 Fetch API 实现 AJAX **3. 如何在项目中使用AJAX****4. 处理AJAX请求的常见问题****5. AJAX与JSON的结合****6. 使用AJAX框架和库****7. 实战&#xff1a;创建一个动态表单****8. AJAX中的事…

spine to unity-2.利用边缘框实现实时碰撞检测

主要讲spine的边缘框&#xff0c;在unity中&#xff0c;实现实时碰撞检测。其中使用的素材&#xff0c;是我为独立游戏ink制作的动画。独立游戏ink的开发日志&#xff0c;在小红薯持续更新中。spine工具包的安装&#xff0c;下载请参考spine to unity-1spine BoundingBoxFollow…

Doris全方位教程+应用实例

Impala性能稍领先于presto,但是presto在数据源支持上非常丰富&#xff0c;包括hive、图数据库、传统关系型数据库、Redis等 缺点&#xff1a;这两种对hbase支持的都不好&#xff0c;presto 不支持&#xff0c;但是对hdfs、hive兼容性很好&#xff0c;其实这也是顺理成章的&…

mac怎样清理photoshop垃圾的方法 ps清理缓存和垃圾 苹果电脑暂存盘已满怎么清理

很多使用过ps&#xff0c;尤其是Adobe全家桶的小伙伴会发现&#xff0c;这些软件占用缓存很多&#xff0c;而且随着使用时间的增长&#xff0c;缓存也会越多&#xff0c;并不会自动清理。那么mac系统怎么清理ps暂存盘呢&#xff1f;mac又该怎么最高效清理磁盘空间呢&#xff1f…

Linux嵌入书学习—数据结构——栈(seqstak)

一、栈&#xff1b; 定义&#xff1a; 是限定仅在表尾&#xff08;栈顶&#xff09;进行插入和删除操作的线性表 栈又称为 后进先出&#xff08;Last In First Out&#xff09; 的线性表&#xff0c;简称 LIFO 结构 栈顶&#xff08;Top&#xff09; 栈顶是栈中允许进行添加&…

RuoYi基于SpringBoot+Vue前后端分离的Java快速开发框架学习_2_登录

文章目录 一、登录1.生成验证码2.验证码作用1.大体流程2.代码层面(我们都是从前端开始看起) 一、登录 1.生成验证码 基本思路&#xff1a; 后端生成一个表达式&#xff0c;例如34?7,显而易见后面是答案截取出来题干和答案把题干11&#xff1f;变成图片&#xff0c;变成流&a…

[C++进阶]多态的概念、定义与实现

多态&#xff0c;顾名思义&#xff0c;即多种形态。具体来说&#xff0c;就是不同对象执行同一行为而产生不同的结果。 一、多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生…

神经网络与注意力机制的权重学习对比:公式探索

神经网络与注意力机制的权重学习对比&#xff1a;公式探索 注意力机制与神经网络权重学习的核心差异 在探讨神经网络与注意力机制的权重学习时&#xff0c;一个核心差异在于它们如何处理输入数据的权重。神经网络通常通过反向传播算法学习权重&#xff0c;而注意力机制则通过学…

LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略

LLMs之Llama 3.1&#xff1a;Llama 3.1的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年7月23日&#xff0c;Meta重磅推出Llama 3.1。本篇文章主要提到了Meta推出的Llama 3.1自然语言生成模型。 背景和痛点 >> 过去开源的大型语言模型在能力和性能上一…

Kylin Cube构建日志分析:洞察大数据构建过程的窗口

Kylin Cube构建日志分析&#xff1a;洞察大数据构建过程的窗口 Apache Kylin是一款为Hadoop优化的开源分布式分析引擎&#xff0c;它通过构建数据立方体&#xff08;Cube&#xff09;来实现对大数据的快速查询。在维护和优化Cube的过程中&#xff0c;构建日志分析是一个重要的…

Docker 常用命令详解

目录 Docker 简介安装 DockerDocker 基本命令 镜像命令容器命令网络命令 Docker 高级命令 数据卷Docker Compose 实战案例 部署一个简单的 Web 应用使用 Docker Compose 管理多容器应用 总结 Docker 简介 Docker 是一个开源的容器化平台&#xff0c;提供了简化应用程序开发、…

OCC 创建方管(拉伸操作)

目录 一、OCC 拉伸操作 二、例子 1、使BRepBuilderAPI_MakeFace 2、使用BRepPrimAPI_MakeRevol 3、垂直路径扫掠 一、OCC 拉伸操作 BRepPrimAPI_MakeSweep Class Reference - Open CASCADE Technology Documentation OCC提供几种图形的构建是由基本图形的旋转,拉伸等方…

C++进程遍历的几种方法

在应用层下&#xff0c;进程遍历有多种方式&#xff0c;这里介绍几种常用的方式&#xff1a;进程快照、NtQuerySystemInformation、EnumProcesses函数、WMI等。 在C#中Process类提供了一个GetProcesses()函数&#xff0c;这个函数内部就是调用的NtQuerySystemInformation进行获…

基于STM32瑞士军刀--【FreeRTOS开发】学习笔记(二)|| 堆 / 栈

堆和栈 1. 堆 堆就是空闲的一块内存&#xff0c;可以通过malloc申请一小块内存&#xff0c;用完之后使用再free释放回去。管理堆需要用到链表操作。 比如需要分配100字节&#xff0c;实际所占108字节&#xff0c;因为为了方便后期的free&#xff0c;这一小块需要有个头部记录…