下载SDK
下载sdk后,通过 samba 传到android文件夹中
校验
用 md5sum 命令查看下载的 SDK 压缩包( tspi_android_sdk_repo_20240202.tar.gz )的md5值。
md5sum tspi_android_sdk_repo_20240202.tar.gz
#自己校验的值
2
获得的校验值和下载包中提供的md5值对比是否一致,查看提供的校验值命令:
cat tspi_android_sdk_repo_20240202_md5sum.txt
#官方sdk提供的校验值
2
解压
解压SDK完成后可以删除tspi_android_sdk_repo_20240202.tar.gz以减小空间
$ tar -xzf tspi_android_sdk_repo_20240202.tar.gz
#sdk解压出来以后是一个.repo文件,以.开头的文件会隐藏,想要查看需要用 ls --all 命令。
2
同步代码
解压完成后只有.repo目录,们还需要通过repo命令把代码同步出来,运行repo命令需要我们ubuntu安装有git和python否则会报错。
sudo apt-get update
sudo apt-get install git -y
sudo apt install repo -y
sudo apt-get install python2.7
sudo apt-get install python3
$设置 python2.7
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
$设置 python3.6
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --config python
#然后通过选项 0,1,2 来切换 python 版本。
#最后开始同步
.repo/repo/repo sync -l -j88
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
切换到开发板分支
cd kernel/ && git clean -xdf && cd .. && repo forall -c
安装编译环境
sudo apt-get update && sudo apt-get install -y git python make openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libgl1-mesa-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libxml2-utils xsltproc unzip python bc imagemagick ccache schedtool libssl-dev libncursesw5-dbg libncursesw5-dev libncurses5 libncursesw5 libncursesada5-dev libncurses5-dbg libncurses5-dev libncursesada-doc libncursesada5 libncurses-dev libncurses-gst libncurses5-dev clang
全编译android 11
这个命令会编译 boot、kernel、android,
原命令为16进程数编译,对设备要求高,修改为自适应进程数
cd u-boot && ./make.sh rk3566 && cd ../kernel && make clean && make distclean && make ARCH=arm64 tspi_defconfig rk356x_evb.config android-11.config && make ARCH=arm64 tspi-rk3566-user-v10.img -j$(nproc) && cd .. && source build/envsetup.sh && lunch rk3566_tspi-userdebug && make installclean -j$(nproc) && make -j$(nproc) && ./mkimage.sh
电源选择,选择不对会编译报错,这里大家记住除了VCCIO4和VCCIO6选1.8V,其他都选3V3,如果没有弹电源选择框则需要安装 whiptail 后在重新编译。
sudo apt install whiptail
固件打包
./mkimage.sh
#查看时间是否和你编译时间接近,确保打包成功
ls rockdev/Image-rk3566_tspi/ -l
2
3
4
打包镜像
将多个固件打包成一个镜像
./build.sh -u
#镜像打包完成,查看到目录下比之前多了一个 update.img 文件
ls rockdev/Image-rk3566_tspi/ -l
2
3
4
编译失败处理:
修改ubuntu交换分区大小
8G内存编译 android 11 失败,原因是swap分区不够。
进入根目录,查看swap原文件(下图是我新建的分区为 swap2file ,并停用并删除了原原 swapfile 分区)。
cd /
ls
2
查看swap空间大小:(原swap分区大小为2G)
swapon --show
swapon -s
free -hm
2
3
下图是新建后swap分区,32G大小。
增加交换分区
#1.进入根
cd /
#2.每段块1M,共16384块,即16G
sudo dd if=/dev/zero of=/swap bs=1M count=16384
#3./swap 被初始化为一个交换空间
sudo mkswap /swap
#4.激活swap空间
sudo swapon /swap
#5.验证结果是否OK
free -hm
2
3
4
5
6
7
8
9
10
11
12
13
14
生成了一个名为swap的交换分区文件,并激活了swap空间,空间大小为16G,但是原文件名为swapfile,空间大小为2G,所以变成了两个swap分区,重新编译任然没有成功。下图为双交换分区图:
重新设置新的交换分区
#1.进入根目录
cd /
#2.创建一个新的交换分区文件
sudo dd if=/dev/zero of=/swap2file bs=1M count=32768
#3.创建swap文件系统
sudo mkswap -f swap2file
#4.开启新的swap
sudo swapon swap2file
#5.关闭并删除原有的swap文件
sudo swapoff swapfile && sudo rm /swapfile
#6.设置开机启动:将/etc/fstab中的swapfile改为 swap2file
/swap2file none swap sw 0 0
#7.最后使用free -hm命令,验证是否ok。
free -hm
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
移除SWAP分区
#停用原swap空间,并删除原swapfile文件。
#移除SWAP分区
#Ubuntu18.04要停用并删除SWAP文件,请按照下列步骤操作:
#1首先输入以下命令停用 SWAP 空间:
sudo swapoff -v /swapfile
#2在 /etc/fstab 文件中删除有效 swap 的行。
#3最后执行以下命令删除 swapfile 文件:
sudo rm /swapfile
2
3
4
5
6
7
8
9
10
重新编译失败处理:
重新编译仍然失败:8G低内存编译报错 “java.lang.OutOfMemoryError: Java heap space“
1、修改 Z:\android\build\soong\java\droiddoc.go 文件,原文件截图如下
插入一行语句
Flag(
2、设置系统内存剩余1.5G时,启用交换空间
#系统只有当虚拟内存不足才会启动Swap,比如系统默认内存只有6000KB时才会启用交换空间,但是此时系统可能已经卡死,无法启动swap,所以需要更改设置。
#终端输入命令:
sudo vim /etc/sysctl.conf
#在最后面添加如下语句
#大致1.5G
vm.min_free_kbytes=1500000
#保存退出
#然后重启开机
2
3
4
5
6
7
8
3、重新编译成功。
参考:AI提供的修改swap分区的方法:
要将swapfile改为swap2file,可以按照以下步骤进行操作:
#1.停止使用当前的交换文件。可以使用以下命令停止使用swapfile:
sudo swapoff /swapfile
#2.创建新的交换文件swap2file。可以使用以下命令创建一个大小为32G的交换文件:
sudo fallocate -l 32G /swap2file
#3.设置交换文件的权限。使用以下命令设置交换文件的权限,以便只有root用户可以读写该文件:
sudo chmod 600 /swap2file
#4.将新的交换文件设置为交换空间。使用以下命令将新的交换文件设置为交换空间:
sudo mkswap /swap2file
#5.启用新的交换文件。使用以下命令启用新的交换文件:
sudo swapon /swap2file
#6.更新`/etc/fstab`文件。编辑`/etc/fstab`文件,将原来的swapfile条目替换为新的swap2file条目。例如,将以下内容添加到`/etc/fstab`文件中:
/swap2file none swap sw 0 0
#7.保存并关闭`/etc/fstab`文件。
#完成以上步骤后,系统将使用新的交换文件swap2file作为交换空间。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21