【GitHub每日速递 20260112】超牛!可定制的 Docker 安卓模拟器镜像,适配 CI 还能远程操控

原文: https://mp.weixin.qq.com/s/KCnHVAizDJNVQsEqkIANZA
超牛!可定制的 Docker 安卓模拟器镜像,适配 CI 还能远程操控
[docker-android] 是一个 在Docker容器中运行Android模拟器 的 工具。简单讲,它让你能快速启动一个可远程访问的Android模拟器,方便在无界面环境中测试App。适用人群:移动开发人员、自动化测试工程师
项目地址:https://github.com/HQarroum/docker-android
主要语言:Shell
stars: 2.1k

仓库核心功能
docker-android 项目提供了一个轻量且可定制的 Docker 镜像,能将 Android 模拟器作为服务运行。其主要功能是通过 Docker 容器,提供一个可在网络上远程控制的完整 Android 模拟器环境。
主要优势
- 轻量级:基于 Alpine 系统构建,镜像大小进行了优化,并且可以选择不包含 Android SDK 和模拟器,进一步减小镜像体积。例如,不包含 SDK 和模拟器的镜像未压缩时仅 414 MB,压缩后为 138 MB。
- 可定制性强:支持自定义 Android 版本、设备类型和镜像类型,可根据需求设置 API 级别、镜像类型和 CPU 架构。
- 网络连接便利:内置了模拟器和 ADB 的端口转发功能,方便在容器外部通过网络连接到模拟器。
- 适合 CI 环境:可以无头模式运行,很适合在 CI 农场中使用,并且与
scrcpy兼容,可远程控制 Android 屏幕。
主要内容与使用方法
构建与运行
- 可以使用
docker-compose构建并启动容器,如docker compose up android-emulator,还支持 GPU 加速和包含 Google Play 商店的配置。 - 也可以使用纯 Docker 命令构建,如
docker build -t android-emulator .。
运行容器
构建好镜像后,需要挂载 KVM 驱动并暴露 ADB 端口,例如 docker run -it --rm --device /dev/kvm -p 5555:5555 android-emulator。运行时需确保 API 33 版本至少有 4GB 内存和 8GB 磁盘空间。
数据保存
可通过挂载数据目录来保存数据,如 docker run -it --rm --device /dev/kvm -p 5555:5555 -v ~/android_avd:/data android-emulator。
连接 ADB
容器内的 ADB 服务器会自动启动并监听所有接口,启动内核后,可使用 adb connect 127.0.0.1:5555 连接 ADB。还能使用 scrcpy 远程控制模拟器屏幕。
自定义镜像
构建时可通过 API_LEVEL、IMG_TYPE 和 ARCHITECTURE 三个参数自定义 Android 版本、镜像类型和 CPU 架构。例如,要安装支持 Google Play 商店的 Android Pie 版本,可使用以下命令:
docker build \
--build-arg API_LEVEL=28 \
--build-arg IMG_TYPE=google_apis_playstore \
--build-arg ARCHITECTURE=x86 \
--tag android-emulator .
挂载外部驱动器
为减少镜像大小和构建时间,可在构建时通过 INSTALL_ANDROID_SDK=0 参数阻止下载和安装 SDK,并在运行时挂载外部的 Android SDK 文件夹,如:
docker build -t android-emulator --build-arg INSTALL_ANDROID_SDK=0 .
docker run -it --rm --device /dev/kvm -p 5555:5555 -v /shared/android/sdk:/opt/android/ android-emulator
从 Docker Hub 拉取
在 Docker Hub 上有不同的预构建镜像,可根据 API 级别和镜像类型拉取,例如 docker pull halimqarroum/docker-android:api-33。
可能的应用场景
- 应用测试:在 CI/CD 流程中,使用不同版本和配置的 Android 模拟器对应用进行自动化测试。
- 开发调试:开发者可以在本地使用该容器快速搭建 Android 开发环境,进行应用的调试和开发。
- 远程控制演示:结合
scrcpy工具,可远程控制 Android 模拟器的屏幕,进行演示或教学。
2024 稳定版!beancount 文本文件双入口记账语言全揭秘
beancount 是一个基于文本文件实现复式记账的会计工具。简单讲,它让你用纯文本记录财务流水,像写代码一样管理个人或公司账目。适用人群:程序员、极客、喜欢文本化管理财务的人士。
项目地址:https://github.com/beancount/beancount
主要语言:Python
stars: 4.9k
核心功能
Beancount 是一种用于复式簿记的计算机语言,可让用户在文本文件中定义财务交易记录,将其读入内存,生成各种财务报告,并且提供了一个 Web 界面。
文档资料
- 文档可在 https://beancount.github.io/docs/ 查看。
- 文档创作在 Google Docs 上进行,可申请访问或对单个文档发表评论来参与贡献。所有源文档的索引可在 http://furius.ca/beancount/doc/index 查看。
- 有专门的 Beancount 邮件列表:https://groups.google.com/forum/#!forum/beancount ,可在此提问,以便其他人能共享回复内容。关于命令行会计的更广泛讨论也会在 Ledger 邮件列表 https://groups.google.com/forum/#!forum/ledger-cli 中进行。
下载和安装
可从 Github 上的官方 Git 仓库获取源代码:https://github.com/beancount/beancount/ 。更多详细安装信息可查看 http://furius.ca/beancount/doc/install 。
版本情况
- 版本 3:自 2024 年 6 月起为当前稳定版本,建议使用。该版本在 v2 基础上进行了精简,v2 分支中包含的大部分工具已迁移到 Github 上各自独立的项目中。
- 版本 2:是 Beancount 的上一个稳定版本,在 2020 年至 2024 年处于维护模式,现在已冻结且过时。它是对第一个版本的完全重写,引入了许多约束和新语法等。
- 版本 1:是 Beancount 的原始版本,2013 年停止开发。此初始版本旨在与 Ledger 相似并部分兼容,不建议使用。
问题反馈
可在 Github 项目页面提交问题工单:https://github.com/beancount/beancount/issues
优势和应用场景
- 优势:以文本文件记录交易,简单易管理和备份;开源且遵循自由开放的理念,用户可根据需求定制;有稳定版本支持,且开发者持续投入精力完善。
- 应用场景:适用于个人财务管理,记录日常收支;也可用于小型企业或基金会的财务记账和报告生成。

浙公网安备 33010602011771号