文档章节

摆脱主机环境限制,随心所欲编译Android源码

TinkerS
 TinkerS
发布于 03/20 11:06
字数 473
阅读 1W
收藏 28

本文源代码详见 https://github.com/Tinker-S/docker-android-build

使用docker编译aosp源码

google官方推荐的安卓编译源码为14.04,由于目前的工作环境为macosx环境或者高版本的ubuntu环境,直接在本机编译会有很多问题,不过借助docker这个强大的工具可解决这个烦恼

安装docker

google搜索安装方法即可

docker更换国内镜像源

为了加速docker镜像的拉取,可以设置国内镜像源,例如设置成网易的镜像源方法如下:

  • 创建 /etc/docker 目录
sudo mkdir -p /etc/docker

  • /etc/docker 目录下创建 daemon.json 文件,写入以下内容
{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

  • 重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

创建编译镜像

由于aosp源码推荐在ubuntu 14.04版本上编译,所以我们基于14.04来创建镜像。这里准备使用5.1.1版本的源码,所以需要安装jdk7。

构建镜像的细节详见 Dockerfile

使用如下命令创建镜像

docker build -t aosp-build:1.0.0 .

查看创建成功的镜像

  image

使用镜像编译源码

  1. 下载aosp源码 推荐去清华镜像站下载打包好的源码即可,也可以使用repo下载指定版本,具体详见网站文档
  2. 假设aosp源码下载路径为 /home/user/aosp,使用aosp-build镜像创建容器,并挂载aosp源码路径
docker run -itd --name aosp-build -v /home/user/aosp:/home/aosp aosp-build:1.0.0
docker exec -it aosp-build /bin/bash

  1. 进入 /home/rom 目录,直接编译源码即可
. build/envsetup.sh
lunch
make -j8

© 著作权归作者所有

上一篇: Android padding
TinkerS
粉丝 8
博文 58
码字总数 13717
作品 0
高级程序员
私信 提问
加载中

评论(6)

这里有一只羊
这里有一只羊
最近我在我们项目里面就是使用docker编译安卓源码的。这个方法在实际中也是可行的。
这里有一只羊
这里有一只羊
我遇到的一些问题和解决办法 1. 安卓源码编译需要区分大小写的文件系统。 2. 基于这个大小写的原因。在windows上最好使用 WSL2 后端的linux去运行docker。并把源码放到wsl文件系统后,再挂载到容器内。不然wsl2现在直接访问windows文件系统很慢很慢。影响编译速度。并且解决了大小写的问题。 3. mac上默认的APFS出厂配置也是使用的不区分大小写的文件系统。可以利用磁盘工具创建一个虚拟的分区。这样不需要重新格式化磁盘就可以创建出一个区分文件大小写的的区域用于挂载安卓源码编译了。
这里有一只羊
这里有一只羊
我编译的是安卓 2.3.x 的安卓系统源码。编译出来的动态库中的调试符号使用的容器内的linux文件系统路径分割符号。 在windows使用lldb远程调试安卓的时候,加载windows文件系统的调试符号路径,调试器无法正常加载到源码。尝试过修改编译出来动态库中路径符号为windows路径分隔符。仍旧无法正常加载源码。对比windows直接编译出来的安卓动态库中的调试符号信息发现其使用绝对路径,而不是目录+相对路径文件名的方式。所以得出这可能是目前lldb的bug,或者未实现的点。如果大家遇到了同样的问题可以还是使用unix系统进行调试。
TinkerS
TinkerS 博主
赞,我倒没用过这么多环境 😄
无聊的人啊
无聊的人啊
要编译多久
TinkerS
TinkerS 博主
看你的主机性能和aosp版本吧,我机器编5.1.1的两个半小时
eclipse 导入 android 4.2 的源码怎么调试framework的代码。

@邓凡平 你好,想跟您请教个问题: 在ubuntu已经编译后android 4.2.2 的源码了,把它已经导入到eclipse的环境中了,我有一台设备安装了上面编译出来的镜像。请问一下,怎么通过eclipse的调试...

zzzmmmrrr
2014/08/28
1.3K
3
Android AOSP基础(一)趁周末用VirtualBox 安装 Ubuntu吧

本文首发于微信公众号「刘望舒」 相关系列文章 Android系统启动系列 应用进程启动系列 Android深入四大组件系列 Android深入理解Context系列 Android深入理解JNI系列 Android解析WindowManag...

刘望舒
2019/05/15
0
0
Android Q最简单的源码下载,源码编译

为啥要编译Android Q? 大家都知道Android Q是目前Google发布的最新的Android版本,目前最新的一版Android Q bata4,现在还没有手机厂商进行适配,只有测试版本的适配方案。 但是我司是一个做...

咖喱配胡椒
2019/07/01
0
0
Android拓展系列(11)--打造Windows下便携的Android源码阅读环境

因为EXT和NTFS格式的差异,我一直对于windows下阅读Android源码感到不满。 前几天,想把最新的android5.0的源码下下来研究一下,而平时日常使用的又是windows环境,于是专门思考了一下这个问...

谦虚的天下
2014/12/25
0
0
Android NDK安装

Android NDK安装 前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底...

长平狐
2012/08/29
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

基于 rsync 和 ln 实现“写时复制”的快照备份功能

一、基本原理 这里“写时复制”加了一个引号,因为这是专门针对使用rsync备份时的写时复制效果,而不是事实上的写时复制(copy-on-write),其达到的目的如下: 使用 rsync 备份数据后,立即...

Inpool
16分钟前
17
0
郑州哪哪里可以开工程款发票-郑州_新闻网

【电薇同步;1.3.8 - 2.7.4.1 - 5.2.9.7.】张生、诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,是Android手机通用...

yyqqvip
今天
30
0
Nginx 反向代理访问

在Nginx 配置 server { listen 80; server_name www.xiaocx.org www.xiaocx.org www.xiaocx.org; root /Users/maison/work/xiaocx/dist; index i......

韩庚庚
今天
33
0
python笔记:环境变量已设置CMD中一直报错"python"不是内部命令,也不是可运行的程序或批处理文件

这些天虽然也写了几个小工具,但是打包都是在anaconda prompt中完成的,因为CMD中一直报错"python"不是内部命令,也不是可运行的程序或批处理文件,各种查度,千篇一律的是环境变量配置的问题...

小玲_001
今天
13
0
AI+BI服务模式

术语与缩写解释 缩写、术语 解 释 BI 商业智能(Business Intelligence,简称:BI),又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析...

zoegu228
今天
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部