跳转至

Android_SDK 源码编译

编译环境

在PC上搭建环境,对 Android/Linux SDK进行编译。

环境准备

在PC上安装Ubuntu,进行SDK编译。

  • 硬件:PC满足RAM ≥ 16 GB,CPU core ≥ 4,Hard Drive ≥ 500GB
  • 软件:Ubuntu 22.04 ,虚拟机磁盘空间分配 ≥ 200GB

依赖安装

1. 进入Ubuntu,打开Terminal,切换为root用户

2. 依次输入下列命令安装依赖。

sudo apt install git bc bison build-essential curl flex libsdl1.2-dev 
sudo apt install g++-multilib gcc-multilib gnupg gperf libncurses5-dev 
sudo apt install imagemagick lib32ncurses5-dev lib32readline-dev squashfs-tools 
sudo apt install lib32z1-dev liblz4-tool xsltproc libssl-dev libwxgtk3.0-gtk3-dev
sudo apt install libxml2 libxml2-utils schedtool lzop pngcrush rsync 
sudo apt install yasm zip zlib1g-dev python3 device-tree-compiler 
sudo apt install python-pip gawk openjdk-8-jdk u-boot-tools patchelf expect
sudo pip install pyelftools

SDK源码获取

Note

1.源码不可放在共享目录下编译
2.编译主机不可用ROOT账号登陆

1.点击下载 SDK,拷贝源码压缩包到编译主机目录。

2.进入源码所在目录,输入命令解压。

tar -zxvf *.tar.gz

3.进入解压生成的a133-linux目录,输入命令恢复源码。

git reset --hard

首次编译配置

./build.sh lunch
======you are building a133 android======
1. BoardConfig-a133-kickpi-k5.mk
2. BoardConfig-a133-kickpi-k5c.mk
which board would you like (1-2):  //选择根据板型K5或者K5C

image-20251107092156026

编译完整镜像

Warning

如果编译Android失败,没有明显报错,可以修改build.sh中Android编译的进程数,将make -j32减小至你设备的实际情况。

./build.sh

Tip

生成的镜像位于a133-android10.0-v2.0/longan/out/。

image-20251107095352068

常见问题

  • 安卓编译失败

编译安卓时失败且没有明显报错,修改以下内容尝试重新编译。

image-20250814093933050

  • 编译 yylloc 报错问题?

由于编译环境 ld 不同,可能会导致 yylloc 报错,需要修改代码中的yylloc,实际路径根据报错提示修改。

--- a/longan/kernel/linux-4.9/scripts/dtc/dtc-lexer.lex.c
+++ b/longan/kernel/linux-4.9/scripts/dtc/dtc-lexer.lex.c
@@ -631,8 +631,8 @@ char *yytext;
 #include "srcpos.h"
 #include "dtc-parser.tab.h"

-//YYLTYPE yylloc;
-extern YYLTYPE yylloc;
+YYLTYPE yylloc;
+//extern YYLTYPE yylloc;
  • APP 、文件编译不生效问题?

android 为惰性编译,直接替换后编译,一些APP、文件不一定编译到镜像中,可以通过如下其中一种方式解决。

  1. make installclean

  2. rm out/target/product/apollo-p2/xxx/xxx

  3. 编译的条件发生变化(比如文件名、APK名)

  4. Ubuntu 22.04无法打开Terminal?

在虚拟机页面按下ctrl+alt+F3,进入命令行模式,按照图示进行操作。

cd /etc/default
nano locale

en_US改为en_US.UTF-8,保存退出,输入reboot重启。