android - 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”不存在。
解决方案
我认为您需要从根文件夹中删除 local.properties 文件,因为 SDK 会在本地搜索哪个容器无法访问。
推荐阅读
- apache-spark - 从 Pyspark 中另一列的值构建一列
- python - 使用python的嵌套for循环中未正确显示迭代值
- vba - 在VB6中执行存储过程时必须声明标识符错误
- bluetooth-lowenergy - 我无法将加速度计数据 xyz 转换为频率
- hsqldb - 如何在 HSQLdb 中加载/挂载现有的基于文件的数据库
- dashboard - 如何将反应对象放入 Valuebox (Flexdashboard - Markdown)
- android - 用相机拍照不起作用Android Studio
- c# - 如何正确锁定并发多个请求
- string - Dart - 如何忽略字符串中的 \ 运算符
- r - R - 在 dplyr 管道中将文本添加到矢量元素的优雅方式?