微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker安装的SDK SDK工具失败

我正在尝试制作一个可以用于构建Android项目的Docker镜像,使用Shippable.

问题是android update sdk命令,它给出以下错误

Installing Android SDK Tools,revision 24.2
  Failed to rename directory /opt/android-sdk-linux/tools to /opt/android-sdk-linux/temp/ToolPackage.old01.
  Failed to create directory /opt/android-sdk-linux/tools

在这里找到了一个解决方案:https://stackoverflow.com/a/8839359/867099,但它适用于Windows,似乎没有解决linux上的问题.看来,在update命令中,当前目录正在使用中,因此无法重命名.

我的解决方法sofar,使用该解决方法建议是:

RUN cp -r /opt/android-sdk-linux/tools /opt/android-sdk-linux/tools_copy

RUN cd /opt/android-sdk-linux/tools && echo 'y' | /opt/android-sdk-linux/tools_copy/android update sdk --no-ui -a --filter tools,platform-tools,build-tools-22.0.1,android-21,extra-android-support,extra-google-google_play_services --force

为了自动接受许可证,我将“y”回复到android命令.

但是我觉得android命令也应该运行在正确的目录下,这就是为什么我先进入它.

但是,它仍然失败.我非常抱歉如何解决这个问题,所以任何帮助是赞赏.

——更新——–

我运行的android sdk update命令没有工具过滤器,最后,我的毕业生的建立是成功的.所以我不知道这是不是一个问题,不能更新他们…

最佳答案
这可以通过在单个Dockerfile的RUN命令中组合所有Android SDK命令来解决.它与Docker的文件系统有关.

有关Android开源项目问题跟踪的a post的详细解释:

The problem is caused when you run the SDK update in a Docker
container. Docker uses a special filesystem which works like a version
control system (e.g. git) and records all changes made to the
filesystem. The problem is that the SDK update uses a hardlink move
operation to move the ‘tools’ directory,which is not supported by the
underlying Docker filesystem.

The solution for this is to simply run all Android SDK commands in a
single ‘RUN’ command in Docker. That way,the hardlink move works as
normal,as long as you don’t use the ‘hardlink move’ operation between
multiple RUN command (snapshots). The advantage of this is also that
your Docker layers will be smaller (compared to running multiple
seperate RUN commands).

Here is the line from the Dockerfile:

RUN wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \
    tar xzf android-sdk_r24.4.1-linux.tgz && \
    rm android-sdk_r24.4.1-linux.tgz && \
    (echo y | android-sdk-linux/tools/android -s update sdk --no-ui --filter platform-tools,tools -a ) && \
    (echo y | android-sdk-linux/tools/android -s update sdk --no-ui --filter extra-android-m2repository,extra-google-google_play_services,extra-google-m2repository -a) && \
    (echo y | android-sdk-linux/tools/android -s update sdk --no-ui --filter build-tools-23.0.2,android-24 -a)

原文地址:https://www.jb51.cc/docker/436368.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐