docker 构建Android编译环境

Docker实战:5分钟搞定Android编译环境,再也不用重复配置JDK和SDK 本文详细介绍了如何利用Docker容器技术,快速构建一个可移植、标准化的Android编译环境。通过编写高效的Dockerfile,开发者可以在5分钟内完成环境搭建,彻底告别重复配置JDK和SDK的繁琐过程,确保开发、测试与CI/CD流程的环境绝对一致,大幅提升团队协作与构建效率。 阅读详情

docker 构建Android编译环境

由于电脑升级了Ubuntu20.04,而Android推荐的编译环境为Ubuntu14.04(Android 5.0 ~ 8.0),Ubuntu18.04(Android 9.0 ~ 11.0);所以考虑使用docker来构建Android编译环境(rockchip 平台,其他平台所需的软件包应该有所差异).

ubuntu:14.04镜像

基于Ubuntu14.04基础镜像,适用于AOSP Android 5.0 版(Lollipop 或 L)到 Android 8.0 版(Oreo 或 O)编译.

  1. 创建Docker镜像:

Dockerfile:

FROM ubuntu:14.04

RUN apt-get update && apt-get install -y git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip python python-crypto liblz4-tool bc openjdk-7-jdk

#COPY repo /usr/local/bin/repo
#RUN chmod a+x /usr/local/bin/repo

ADD java-8-openjdk-amd64.tgz /usr/lib/jvm
#ADD jdk1.6.0_45.tar.gz /usr/lib/jvm

RUN useradd -m -s /bin/bash builder
# && echo builder >/root/username

#COPY gitconfig /home/builder/.gitconfig
#RUN chown 1000:1000 /home/builder/.gitconfig
#ENV HOME=/home/builder
#ENV USER=builder

#ENTRYPOINT chroot --userspec=$(cat /root/username):$(cat /root/username) / /bin/bash -i

执行以下命令创建镜像:

$ docker build -t ubuntu/builder:14.04 .
  1. 启动一个Docker容器,并编译android源码:
$ docker run --privileged -it --rm --hostname android -u builder:builder -e USER="builder" -v /mnt:/src ubuntu/builder:14.04 /bin/bash
builder@android:~$cd /src
builder@android:~$source build/envsetup.sh
builder@android:~$lunch
builder@android:~$make -j8

FAQs

  1. 编译android6报错:out/host/linux-x86/bin/jack-admin: line 27: USER: unbound variable

解决方法:
docker run 加参数-e USER=“builder” 设置USER环境变量

或者

$ export USER=builder

ubuntu:18.04镜像

基于Ubuntu18.04基础镜像,适用于AOSP Android 9.0 版以及以上版本编译.
AOSP 中的 Android master 分支带有预构建版本的 OpenJDK;因此无需另行安装。

  1. 创建Docker镜像:

Dockerfile

FROM ubuntu:18.04

RUN apt-get update && apt-get install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig python python2.7 python-crypto liblz4-tool bc rsync

#COPY repo /usr/local/bin/repo
#RUN chmod a+x /usr/local/bin/repo

RUN useradd -m -s /bin/bash builder
# && echo builder >/root/username

#COPY gitconfig /home/builder/.gitconfig
#RUN chown 1000:1000 /home/builder/.gitconfig
#ENV HOME=/home/builder
#ENV USER=builder

#ENTRYPOINT chroot --userspec=$(cat /root/username):$(cat /root/username) / /bin/bash -i

执行以下命令创建镜像:

$ docker build -t ubuntu/builder:18.04 .
  1. 启动一个Docker容器:
$ docker run --privileged -it --rm --hostname android -u builder:builder -e USER="builder" -v /mnt:/src ubuntu/builder:18.04 /bin/bash
builder@android:~$cd /src
builder@android:~$source build/envsetup.sh
builder@android:~$lunch
builder@android:~$make -j8

各个参数解析:

-t: 在新容器内指定一个伪终端或终端。

-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

-rm: 退出时删除容器

FAQs

  1. 编译android11 出现:build sandboxing disabled due to nsjail error.
    解决方法:docker run 添加 --privileged 参数 为该容器赋予扩展权限
$ docker run --privileged -it --rm --hostname android -u builder:builder -e USER="builder" -v /mnt:/src ubuntu/builder:18.04 /bin/bash

–privileged标志为容器提供了所有功能。当执行docker run --privileged时,docker将允许访问主机上的所有设备,并在AppArmor或SELinux中设置一些配置,允许容器几乎与主机上运行在容器之外的进程一样访问主机。

Window10 子系统Ubuntu编译Android源码出错 Build sandboxing disabled due to nsjail error Window10 子系统Ubuntu编译Android源码出错 FAILED: ninja: ./build/blueprint/bootstrap/build.ninja:11: loading ‘out/soong/.minibootstrap/build-globs.ninja’: Exec format error subninja 09:26:18 Build sandboxing disabled due to nsjail error. This may become fatal in the 阅读详情

相关推荐

02.AOSP编译并运行

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 先传入aosp-latest.tar,(最好用FileZilla工具去传,其他工具容易出错,目前已存放在/mnt/share/目录中,大家可以在启动docker镜像时,把该文件挂载上去,然后直接解压即可。) tar xf aosp-latest.tar cd aosp ​ curl https://storage.googleapis.com/git-repo-downloads/repo >..

qq_38307618的博客 3307

docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error

使用docker搭建aosp的编译环境,测试中,出现Build sandboxing disabled due to nsjail error .本文记录错误情况,及解决办法。

上周的博客 1万+

Linux下快速构建Android编译环境

背景: 在移动互联网时代,大多数的企业内部都有移动客户端,而移动客户端又因为OS的不同产生了两个派系,即安卓(Android)和苹果(IOS),而对于互联网技术从业者来说,这两者最直接的区别就是开源和闭源,因而也导致了在构建移动客户端时,为了整体的稳定性和可靠性的考虑(甚至有成本的考虑),需要进行分别编译,本篇文章记录下如何在Linux环境下构建Android编译环境. 介绍 通常,开发...

weichuangxxb的博客 1443

WSL2之docker编译android12报错:Build sandboxing disabled due to nsjail error(六十九)

本篇目的:WSL2之docker编译android12报错:Build sandboxing disabled due to nsjail error。

Android系统攻城狮 4452

用Docker搞定Android 13源码编译环境:告别依赖冲突,实现环境一键复用

本文详细介绍了如何利用Docker容器化技术构建Android 13源码编译环境,解决传统物理机或虚拟机部署中的依赖冲突问题。通过Dockerfile和实战流程演示,实现环境一键复用和团队共享,大幅提升开发效率。

weixin_29159995的博客 397

利用Dockerfile打造高效Android持续集成环境

本文详细介绍了如何利用Dockerfile构建高效的Android持续集成环境,解决开发中的环境配置难题。通过Docker容器化技术,实现编译环境的一致性和可移植性,显著提升团队协作效率。文章涵盖基础镜像构建、高级优化技巧以及CI/CD集成实践,帮助开发者快速搭建稳定的Android编译容器。

weixin_42523389的博客 349

基于Docker编译环境,为OPPO R9s构建支持容器化的安卓内核

本文详细介绍了如何基于Docker编译环境为OPPO R9s手机构建支持容器化的安卓内核。通过使用预配置的Docker镜像简化了复杂的交叉编译环境搭建,并重点讲解了内核配置的关键修改,包括命名空间、控制组和网络功能的启用,以支持Docker容器化运行。

z5a6b的博客 697

docker-android-build-box:优化的docker映像包括Android,Kotlin,Flutter sdk

Docker Android构建盒 介绍 经过优化的docker镜像包括Android , Kotlin和Flutter sdk 。 里面有什么 它包括以下组件: Ubuntu 18.04 Android SDK 25 26 27 28 29 30 Android构建工具: 25.0.0 25.0.1 25.0.2 25.0.3 26.0.0 26.0.1 26.0.2 27.0.1 27.0.2 27.0.3 28.0.1 28.0.2 28.0.3 29.0.2 29.0.3 30.0.0 Android NDK r21 Android模拟器 测试NG

制作Android apk编译环境的docker镜像

本文介绍了如何构建一个包含Android编译环境的Docker镜像,用于隔离化编译APK。主要内容包括:配置Gradle基础镜像、安装Android SDK工具链、导入企业证书、构建自定义镜像;通过docker run命令挂载项目源码进行编译;以及使用docker-compose简化操作流程。该方法实现了开发环境的标准化管理,避免了本地环境污染,同时支持复用Gradle缓存提升编译效率。文中提供了完整的Dockerfile和docker-compose.yml配置示例,适合企业级Android项目的持续集成

Jason_Julie的博客 1303

微信自动化必备软件:inspect(获取微信界面元素)

SaveButton10015.2:1 ✅(合格)Passed ✅说明这个控件完全符合无障碍标准。

Ven%的博客 1381

WRF中使用ERA5再分析数据

   本人在做一些实例时,需要用到最新的ERA5再分析数据集,其中我下载的是ERA5 hourly data on pressure levels form 1979 to present和ERA5 hourly data on single levels from 1979 to present中的3天数据。 1、注册climate copernicus账号 下载ERA5数据前先要注册其账号 2、选择变量    WRF中对于气象数据的字段有具体的要求, ......

GIS 8166

Docker在Android中的应用

Docker在Android中的应用 测试环境基于xOS 10.14.5,2019/07/27 Docker 是什么? https://www.docker.com/ Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 可...

高远的博客 1万+

SAP生产订单(创建-下达-发料-报工-入库)全流程及反向流程

SAP创建下达报工入库发料以及取消发料取消入库,批量下达删除关闭,生产订单出入库查询和状态更改查询记录

weixin_38974136的博客 2万+

鲁班猫4开发板-环境搭建2-Android编译环境(Docker)

继续前文的基于WSL2 Ubuntu-22.04环境。

1740

PLSQL Developer14连接Oracle详细过程

下载地址:Instant Client for Microsoft Windows (x64) 64-bit | Oracle 中国解压客户端工具到一个目录(解压文件到当前目录,自动合并成一个目录)​ 电脑(右键)→属性→高级系统设置→环境变量→系统环境变量→新建变量名:NLS_LANG 变量值: AMERICAN_AMERICA.ZHS16GBK​ 变量名:TNS_ADMIN 变量值:C:\xiaxinyu\software\Oracle\instantclient_19_10​ 在Oracle客户端(C

summer_fish的专栏 3979

从零到一:ArduPilot无人船PID调参实战指南

本文详细介绍了ArduPilot无人船PID调参的实战指南,从基础参数设定到高级调参技术,帮助用户掌握水面环境下的PID控制逻辑。通过案例分析和参数示例,解决无人船在空载、负载变化及不同水域环境中的航行问题,提升无人船的稳定性和精确度。

weixin_29266647的博客 506

Linux docker(02) docker实战-最简构建编译系统

该系列文章的目的旨在docker的基础学习和docker的实战应用。

wangdsh的博客 1165

从服装打版到激光切割:二维异形件排版算法在实际生产中的避坑指南

本文深入探讨二维异形件排版算法在服装、家具等行业的实际应用,对比NFP和重叠移除两种核心策略的优缺点,并提供算法落地的五大实战陷阱与解决方案。通过案例分析和技术要点解析,帮助生产管理者提升材料利用率5%-15%,优化生产效率。

weixin_28717431的博客 416

群晖系统 编译android,智能家居篇-2:群晖Docker搭建ESPHome环境 ,为智能硬件构建编译环境...

介绍开篇之前,先简明介绍一下本篇文章内涉及到的一些可能带有一点专业性的名词:固件:也叫“程序”,就是通过编写代码实现特定控制功能的文件,它能够烧录(写)进特定芯片里面。比如:洗衣机、空调、智能电饭煲等,里面都有控制芯片,那么实现智能化的,就是芯片里面的程序了,程序编写好了之后是固定不变的,所以也叫固件。编译环境:就是在编写代码的时,调试、运行代码所需要的环境,它需要包含了特定的头文件、依赖文件、库...

weixin_34246529的博客 2671

手把手教你用SpringBoot+Vue3+Docker从零搭建一个在线OJ系统(附完整源码)

本文详细介绍了如何使用SpringBoot、Vue3和Docker从零搭建一个在线OJ系统,涵盖前后端开发、判题机实现及Docker容器化部署。通过完整的源码和实战步骤,帮助开发者掌握OJ系统的核心架构与关键技术,适用于算法训练、编程竞赛等场景。

weixin_42648844的博客 296

Android应用发布到Google Play的步骤和注意事项

发布Android应用到Google Play是将您的应用分享给全球用户的重要步骤。Google Play是Android平台上最大的应用分发渠道之一,使得开发者可以轻松将他们的应用推广到数百万的用户。在本篇博客中,我们将逐步介绍如何将您的Android应用发布到Google Play,同时提供详细的步骤和注意事项,以及相关的代码示例。

2201_76125261的博客 850

Docker中布置Jenkins实现Android项目的自动化构建

因项目需要,要在服务器上使用Jenkins完成Android项目的自动化构建,但服务器上登录的账户没有管理员权限,无法用sudo命令,因此需要把相应环境布置在docker中。

wlxyhy的博客 1545

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

最简单Android源码编译环境搭建方法!

作为一名从事Android的开发者,很多人最近都在和我吐槽Android是不是快要凉了?而在我看来这正是市场成熟的表现,所有的市场都是温水煮青蛙,永远会淘汰掉不愿意学习改变,安于现状的那批人,希望所有的人能在大浪淘沙中留下来,因为对于市场的逐渐成熟,平凡并不是我们唯一的答案!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!项目源码讲义》点击传送门即可获取!**

2301_79655511的博客 2311

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

用Docker搞定Android 13源码环境:告别宿主机污染,实现一键编译

本文详细介绍了如何利用Docker容器化技术搭建Android 13源码编译环境,实现环境隔离与一键编译。通过精心设计的Dockerfile配置、国内镜像源加速以及编译参数优化,开发者可以高效完成Android13全编译流程,同时避免宿主机污染问题。文章还提供了团队协作和CI/CD集成方案,显著提升开发效率。

weixin_42520909的博客 170

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

如何从源码构建Phoenix钱包:Android和iOS双平台编译教程

Phoenix是一款由ACINQ开发的自托管比特币钱包,通过闪电网络实现快速、低成本的比特币收发功能。本教程将详细介绍如何从源码构建适用于Android和iOS平台的Phoenix钱包应用,让你轻松掌握开源钱包的编译方法。 ## 准备工作:编译环境搭建 在开始构建Phoenix钱包前,需要确保你的开发环境满足以下要求: - **Android平台**:需安装[Android Studio](

gitblog_00864的博客 328
上一篇: rk3368 更改调试串口ttyS4替代ttyS2
下一篇: 系统死机重启调试分析
D00PING
博客等级 码龄12年 96粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值