# 03-ANDROID\_SDK源码编译

## SDK介绍

Android SDK 版本信息

内核版本：4.9

Android系统版本：10.0

## Android SDK编译

### 编译完整镜像

**环境配置**

```
$ cd longan/
$ ./build.sh config

Welcome to mkscript setup progress
All available platform:
   0. android
   1. linux
Choice [android]: 0
All available ic:
   0. a133
   1. t509
Choice [a133]: 0
All available board:
   0. b1
   1. b3
   2. b4
   3. c3
   4. c4
   5. dpf
   6. fpga
   7. perf1
   8. perf2
   9. perf3
  10. qa
  11. ver
Choice [c3]: 3
```

**编译整包镜像**

```
$ cd - 
$ ./build.sh lunch //根据板型选择K5或K5C
$ ./build.sh
```

> 镜像生成目录：longan/out/

### \*\*kconfig \*\*

**路径**

```
longan/kernel/linux-4.9/arch/arm64/configs/sun50iw10p1smp_a133_android_defconfig
```

**配置kconfig**

```
$ cd longan
$./build.sh loadconfig
$./build.sh menuconfig
$./build.sh saveconfig
$./build.sh mergeconfig
```

### 设备树路径

```
a133-android10.0-v2.0/longan/device/config/chips/a133/configs/c3/kickpi-k5c.dts
```

## Android 环境

```
cd android
source build/envsetup.sh
lunch ceres_c3-userdebug
```

## 常见问题

### 安卓编译失败

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

![image-20250814093933050](http://tanzhtanzh.oss-cn-shenzhen.aliyuncs.com/img/image-20250814093933050.png)

### 编译 yylloc 报错问题

**由于编译环境 ld 不同，可能会导致 yylloc 报错，需要修改代码中的yylloc**

实际路径根据报错提示修改

```diff
--- 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名）
