首页 > 解决方案 > Docker 找不到 Android SDK 和 NDK 目录

问题描述

我创建了一个 docker 容器,以便在其上运行我的 gradle 任务。我正在下载其中的 sdk,但是当我从外部运行任务时,它说找不到 sdk 文件夹,因为它正在获取我在项目的 local.properties 文件中的路径。它指向我的机器 sdk 文件夹。如何在 docker 镜像中指定 sdk 文件夹?谢谢。

Docker 镜像构建文件:

FROM openjdk:8

ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_NDK_HOME="/usr/local/android-sdk/ndk-bundle" \
    ANDROID_VERSION=26 \
    ANDROID_BUILD_TOOLS_VERSION=26.0.2

# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses

# add to PATH
ENV PATH ${PATH}:${ANDROID_HOME}

ENV ANDROID_NDK_HOME /usr/local/android-ndk
ENV ANDROID_NDK_VERSION r19
ENV NDK_URL="https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip"

# Download Android NDK
RUN mkdir "$ANDROID_NDK_HOME" \
    && cd "$ANDROID_NDK_HOME" \
    && curl -o ndk.zip $NDK_URL \
    && unzip ndk.zip \
    && rm ndk.zip

# add to PATH
ENV PATH ${PATH}:${ANDROID_NDK_HOME}

# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools"

RUN mkdir /application
WORKDIR /application

这就是我运行任务的方式:

docker run -it --rm -v "$PWD":/application packsdkandroiddocker.image sh -c "$@" ./gradlew clean

这是我得到的错误:

NDK 缺少“平台”目录。如果您使用的是 NDK,请验证 ndk.dir 是否设置为有效的 NDK 目录。它当前设置为 /Users/adalpari/Library/Android/sdk/ndk-bundle。如果您不使用 NDK,请从 ANDROID_NDK_HOME 或 local.properties 中取消设置 NDK 变量以删除此警告。

FAILURE:构建失败并出现异常。

  • 出了什么问题:配置项目“:app”时出现问题。SDK 目录“/Users/adalpari/Library/Android/sdk”不存在。

标签: androiddocker

解决方案


我认为您需要从根文件夹中删除 local.properties 文件,因为 SDK 会在本地搜索哪个容器无法访问。


推荐阅读