pollux's Dairy

ubuntu-16.04 源码编译 Android-6.0.0_r1 与调试

字数统计: 644阅读时长: 4 min
2019/12/17 Share

一次过还是挺开心的,记录下编译过程

环境:ubuntu-16.04 amd64,源码是Android-6.0.0_r1

1、环境配置

1
2
3
4
5
6
7
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib \
tofrodos python-markdown libxml2-utils xsltproc \
zlib1g-dev:i386 dpkg-dev libsdl1.2-dev libesd0-dev \
git-core gnupg zip curl zlib1g-dev gcc-multilib \
libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev \
libx11-dev lib32z-dev ccache unzip m4

安装 open JDK7

Ubuntu16.04没有open JDK7的源,增加个仓库源

1
2
3
sudo add-apt-repository ppa:openjdk-r/ppa 
sudo apt-get update
sudo apt-get install openjdk-7-jdk

安装后环境变量已经配置好,java -version查看

有些工具需要JDX8才能运行,比如jadx,可以使用下面的命令切换java版本

1
2
sudo update-alternatives --config java
sudo update-alternatives --config javac

2、获得Android源码

使用repo下载文件很大,因为aosp文件夹下的.repo文件是仓库,.repo以外的文件才是需要的源码文件,.repo很大,使用repo下载的源码有几十个G。可以直接下载别人打包好的镜像文件

https://pan.baidu.com/s/1JYOgTrF6xe3cNwmzxmE5Yw

这样android-6.0.0_r1的大小为4G多

谷歌官方repo和教程
https://source.android.com/setup/build/downloading
当然也可以使用清华的repo镜像
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

下载下来是7z压缩文件,需要额外的软件解压

1
2
sudo apt-get install p7zip-full
7z x android-6.0.0_r1.7z

解压后修改art/build/Android.common_build.mk,修改内容如下

1
2
3
4
5
6
7
# Host.
ART_HOST_CLANG := false
- ifneq ($(WITHOUT_HOST_CLANG),true)
+ ifeq ($(WITHOUT_HOST_CLANG),false)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif

否则会报unsupported reloc…的错误

If it still not works,try this in your android root path:
cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

3、编译

在源码根目录下:

1
2
make clobber
source build/envsetup.sh

通过lunch选择编译目标,这里编译aosp_arm-eng,选择1

1
lunch

开始编译

1
make -j8

编译好的文件在out/target/product/generic

启动模拟器

1
emulator -memory 512 -cache-size 2028

若有多个版本

1
2
3
source build/envsetup.sh
lunch
emulator

编译单独的模块

1
mmm art/runtime

重新打包系统镜像

1
make snod

emulator启动参数

-memory size
-cache-size size

https://developer.android.com/studio/run/emulator-commandline?hl=zh-cn

真正使用的命令

1
out/host/linux-x86/bin/emulator -sysdir out/target/product/generic/ -system out/target/product/generic/system.img -ramdisk out/target/product/generic/ramdisk.img -data out/target/product/generic/userdata.img -kernel /home/hzh/oldhome/learn/goldfish/arch/arm/boot/zImage -scale 1.0 -memory 512 -partition-size 1024

关闭ubuntu节能模式

1
sudo pm-powersave false

4、REFERRENCE

https://www.jianshu.com/p/367f0886e62b

http://eternalsakura13.com/2018/02/24/bianyi/

CATALOG
  1. 1. 1、环境配置
  2. 2. 2、获得Android源码
  3. 3. 3、编译
    1. 3.1. 编译单独的模块
    2. 3.2. emulator启动参数
    3. 3.3. 关闭ubuntu节能模式
  4. 4. 4、REFERRENCE