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

image

原文: 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

image

仓库核心功能

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_LEVELIMG_TYPEARCHITECTURE 三个参数自定义 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 界面。

文档资料

下载和安装

可从 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

优势和应用场景

  • 优势:以文本文件记录交易,简单易管理和备份;开源且遵循自由开放的理念,用户可根据需求定制;有稳定版本支持,且开发者持续投入精力完善。
  • 应用场景:适用于个人财务管理,记录日常收支;也可用于小型企业或基金会的财务记账和报告生成。
posted @ 2026-01-12 08:08  piggy侠  阅读(0)  评论(0)    收藏  举报