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工具。

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

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

bash 复制代码
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-dev

sudo 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 fontconfig

sudo 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-perl

sudo apt-get install uuid-dev

sudo apt install libtinfo5 libncurses*

./scripts/fit-core.sh: line 611: fdtget: command not found
sudo apt install device-tree-compiler

sudo 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:

bash 复制代码
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

sudo apt install openjdk-11-jdk

若同时安装了 JDK8 和 JDK11,可以使用下面的命令选择 JDK11:
sudo update-alternatives --config java

使用以下命令查看是否正确选择了JDK1:
java -version

3.安装Python

bash 复制代码
//sudo add-apt-repository ppa:deadsnakes/ppa
//sudo apt install python3.9
//sudo update-alternatives --list python

sudo ln -s /usr/bin/python3 /usr/bin/python
//sudo ln -s /usr/bin/python2 /usr/bin/python

4.配置git

bash 复制代码
git config --global user.email myname@xxx.com
git config --global user.name myname

git 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:

bash 复制代码
本地电脑输入:
ssh-keygen -t rsa
将 .ssh/id_rsa.pub中的内容全部复制到gerrit网址中

测试key是否添加成功,本地电脑输入:
ssh username@192.168.1.111 -p 29418

gerrit:
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.pub

ssh myname@192.168.1.111 -p 29418

8.配置repo

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

9.配置USB和fastboot,adb

bash 复制代码
下载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系统

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

11. framework层代码编译:

bash 复制代码
需要先全编译android系统
source build/envsetup.sh
lunch xxx-userdebug

make framework && make framework-res

make framework && make framework-minus-apex && make framework-res && make services

make update-api && make framework && make framework-minus-apex && make framework-res && make services

12. 编译Error和解决方法

bash 复制代码
编译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
相关推荐
雨中rain18 分钟前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
锋风Fengfeng34 分钟前
安卓15预置第三方apk时签名报错问题解决
android
Bessssss38 分钟前
centos日志管理,xiao整理
linux·运维·centos
s_yellowfish38 分钟前
Linux服务器pm2 运行chatgpt-on-wechat,搭建微信群ai机器人
linux·服务器·chatgpt
豆是浪个40 分钟前
Linux(Centos 7.6)yum源配置
linux·运维·centos
vvw&41 分钟前
如何在 Ubuntu 22.04 上安装 Ansible 教程
linux·运维·服务器·ubuntu·开源·ansible·devops
我一定会有钱42 分钟前
【linux】NFS实验
linux·服务器
Ven%1 小时前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip
是阿建吖!1 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
张暮笛1 小时前
蓝牙协议——音量控制
linux