3

我是 Docker 新手,需要仪器测试方面的帮助。我创建了一个 Dockerfile(从这里获取并进行一些修改)

FROM ubuntu:14.04

# Install java7
RUN apt-get update && \
  apt-get install -y software-properties-common && \
  add-apt-repository -y ppa:webupd8team/java && \
  (echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select     true | /usr/bin/debconf-set-selections) && \
  apt-get update && \
  apt-get install -y oracle-java7-installer && \
  apt-get clean && \
  rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/*
ENV JAVA7_HOME /usr/lib/jvm/java-8-oracle

# Install java8
RUN apt-get update && \
  apt-get install -y software-properties-common && \
  add-apt-repository -y ppa:webupd8team/java && \
  (echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections) && \
  apt-get update && \
  apt-get install -y oracle-java8-installer && \
  apt-get clean && \
  rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/*
ENV JAVA8_HOME /usr/lib/jvm/java-8-oracle

# Install Deps
RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y --    force-yes expect git wget libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1     libpulse0 python curl libqt5widgets5 && apt-get clean && rm -fr     /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Copy install tools
COPY tools /opt/tools

RUN chmod +x /opt/tools/android-accept-licenses.sh
RUN chmod +x /opt/tools/android-wait-for-emulator.sh

ENV PATH ${PATH}:/opt/tools

# Install Android SDK
RUN cd /opt && wget --output-document=android-sdk.tgz --quiet         https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \
  tar xzf android-sdk.tgz && \
  rm -f android-sdk.tgz && \
  chown -R root.root android-sdk-linux && \
  /opt/tools/android-accept-licenses.sh "android-sdk-linux/tools/android     update     sdk --all --no-ui --filter platform-tools,tools" && \
  /opt/tools/android-accept-licenses.sh "android-sdk-linux/tools/android update    sdk --all --no-ui --filter platform-tools,tools,build-tools-25.0.2,android-14,android-23,android-25,extra-android-support,extra-android-m2repository,extra-  google-m2repository,extra-google-google_play_services,sys-img-armeabi-v7a-  google_apis-23"

# Setup environment
ENV ANDROID_HOME /opt/android-sdk-linux
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools

RUN which adb
RUN which android

# Create emulator
RUN echo "no" | android create avd \
            --force \
            --device "Nexus 5" \
            --name nexus5_23 \
            --target android-23 \
            --abi google_apis/armeabi-v7a \
            --sdcard 512M

# Cleaning
RUN apt-get clean

# Start up the emulator
RUN ["/bin/bash", "-c", "SHELL=/bin/bash emulator -avd nexus5_23 -no-window & /opt/tools/android-wait-for-emulator.sh"]

# GO to workspace
RUN mkdir -p /opt/workspace
WORKDIR /opt/workspace

当我构建它时,它可以工作,并且模拟器正在运行。我的 bitbucket 管道是

image: xxx/android-23:latest
pipelines:
  default:
    - step:
        script: 
          - bash ./gradlew cAT 

但是我所有的管道都报错了:

com.android.builder.testing.api.DeviceException:没有连接设备!

是否可以自动运行仪器测试?可能我必须使用的不是 Docker,而是其他东西?

4

1 回答 1

0

RUN 命令在构建容器时运行,您可以将其视为运行模拟器并关闭计算机。当您重新启动容器时,它不再运行。您需要一个“CMD”作为最后一行,它会在容器启动时运行。有关更多信息,请参阅此链接

让 GUI 应用程序在 docker 中工作并不容易,祝你好运,如果你能正常工作,请回帖!

于 2017-06-08T19:54:06.790 回答