Alpine上的Android SDK-adb没有这样的文件或目录

时间:2019-01-22 02:42:16

标签: android adb alpine

我正在尝试构建一个包含Android SDK的Alpine图片-具体来说是platform-tools包。

我的Dockerfile执行以下操作:

  1. 安装Java并设置JAVA_HOME(Android所需)。
  2. 从Google下载Android SDK工具。
  3. 解压缩软件包。
  4. 设置ANDROID_HOME。同时设置PATH,以便可以使用sdkmanager可执行文件。
  5. 使用platform-tools安装sdkmanager
  6. platform-tools添加到PATH

platform-tools包含一个名为adb的可执行文件,但是由于某种原因,它看不到。运行adb返回:

bash: /android-sdk/platform-tools/adb: No such file or directory

这是我的Dockerfile:

FROM alpine:latest

# Install bash and java
RUN apk update
RUN apk add bash openjdk8
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
ENV PATH="$PATH:$JAVA_HOME/bin"

# Download Android SDK and set PATH
RUN mkdir /android-sdk
RUN wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && unzip *.zip -d /android-sdk && rm *.zip
ENV ANDROID_HOME="/android-sdk"
ENV PATH="$PATH:$ANDROID_HOME/tools/bin"

# Install platform-tools
RUN yes | sdkmanager "platform-tools"
ENV PATH="$PATH:$ANDROID_HOME/platform-tools"
RUN adb version # throws error: adb not found

我看过this question,但该问题应该使用平台工具v24.0及更高版本解决。

3 个答案:

答案 0 :(得分:1)

Alpine使用musl libc而非glibc and friends,因此某些软件可能会遇到问题,具体取决于其libc要求的深度。

adb使用glibc进行编译,因此它将无法在Alpine中运行,这通常会导致错误:No such file or directory

您可以通过运行glibc来验证文件是使用file <path to file> | grep "interpreter /lib64/ld-linux-x86-64.so.2"编译的。

答案 1 :(得分:0)

您可以像这样安装android-tools

RUN apk add \
    android-tools \
    --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing

关键是如图所示设置--repository,因为它仅在边缘测试仓库中。

我不认为它包含整个SDK,因此对于其他工具,可能还需要下载和解压缩。我不知道这样是否可以处理您想要的所有内容,但是adb至少会打印一个帮助文档。

答案 2 :(得分:0)

这可能会有所帮助,尽管在使用兼容层时 Gradle 守护进程在 Alpine Linux 上随机崩溃。

<块引用>

gcompat 是 Alpine 用户的首选兼容层。

apk 添加 gcompat

之后,您可以正常运行二进制文件。

来源:https://wiki.alpinelinux.org/wiki/Running_glibc_programs