# Android 

| images     | desc | other |
| -------- | ---- | ---- |
| android-dev-eclipse |   基于 Ubuntu 的 Android 项目开发编译环境。   |   eclipse项目打包apk比较复杂   |
| android-dev-studio |   基于 Ubuntu 的 Android 项目开发编译环境。   |    studio打包,需要管理依赖  |
| android-source     |  基于 Ubuntu 的 Android 系统源码编译。    |      |
|          |      |      |

## usage

1. 启动 docker 环境

```
docker-compose up -d
```

2. 进入容器编译项目

```
aapt package -f \
-M AndroidManifest.xml \ 
-I "$ANDROID_HOME/platforms/android-N/android.jar" \
-S res/ \
-J gen/ \
-m \

```


## android-source

android 系统源码编译,android源码特别大,所以不要放到镜像中打包,所以本质上本镜像就是一个 Ubuntu附带gcc等编译工具而已。

**系统要求**

* docker中Ubuntu18
* 内存16G
* 磁盘200G SSD

## 使用

1、启动编译系统(略),下面通过docker-compose启动。

```
docker run --name aosp6 -it android-source /bin/bash

```

2、下载源码,启动编译系统

下载源码可能耗时一两天,大概50G,解压80G,在aosp还原则会120G左右。

```
sh tools/download_android_repo.sh
```

这个可以直接插上已经下载好Android系统源码的磁盘,然后把指定目录挂载到docker精选即可。

```
cd xx/aosp
docker-composer up -d
```

3、编译源码

```
sh tools/build_src.sh

```

4、测试

编译后,在 build会有对象的系统镜像文件,最好真机中刷机体验。或者虚拟机中更加镜像创建,这个时候就需要可视化环境,也就不能在docker中跑了,windows系统中安装好emulator,不是某某模拟器,某某模拟器自带镜像:

```
emulator -kernel ./kernel/goldfish-android-3.4/arch/x86/boot/zImage &
```



## android 源码构建

**下载源码**

采用repo工具同步多个git项目:

```

mkdir ~/bin
PATH=~/bin:$PATH

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

# 创建一个空目录用来保存android源代码
mkdir ~/aosp
cd ~/aosp

# 指定从清华的镜像,只下6.0.1版本Android 
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r46
#同步源码树,并发设置为8,不要太大
repo sync -j8
```

**构建源码**

```

source build/envsetup.sh
export USER=$(whoami)
lunch aosp_hammerhead-eng
make -j16
```