为 Android GitLab CI 创建 Dockerfile

Creation of Dockerfile for Android GitLab CI

我正在为 Runner 创建我自己的 Dockerfile,它即将在 Gitlab CI 中作为 Android 项目运行器工作。问题是,我要将物理设备连接到一台机器,我将在这台机器上部署该跑步者。通常使用 Linux 机器,我试图将 51-android.rules 添加到 /etc/dev/rules.d 中,如本教程所示:Udev Setupdocker build . 命令执行期间,出现错误:

/bin/sh: 1: udevadm: not found

我的问题是:

  1. 1) 是否可以将物理 Android 设备连接到 docker-运行 OS?
  2. 2) 如果1) 是,我的错误在哪里?

有问题的 docker 文件部分:

FROM ubuntu:latest
#Ubuntu setup
RUN apt-get update
RUN apt-get install -y wget

...

#Setup Android Udev Rules
RUN wget https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules 
RUN mv -y `pwd`/51-android.rules /etc/udev/rules.d
RUN chmod a+r /etc/udev/rules.d/51-android.rules
RUN udevadm control --reload-rules
RUN service udev restart
RUN usermod -a -G plugdev `whoami`
RUN adb kill-server
RUN adb devices 

#Cleaning 
RUN apt-get clean

Docker 的理念是每个容器有一个进程 运行。通常没有Init System,所以你不能像你习惯的那样使用服务。

我不知道是否有可能实现你想要做的事情,但我认为你想要主机上的 udev 规则并在启动时添加设备:https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container-device

您可能还想阅读 https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-getRUN 创建一个新层,仅 添加 信息到容器。

话虽如此,您可能希望将 adb devices 作为容器的 ENTRYPOINTCMD