使用docker制作Android镜像(实操可用)

一、安装包准备

1、准备jdk

下载地址:Java Downloads | Oracle

注意版本!!!!!! 参考下面的 对照表,不然后面构建镜像报错,就是版本不对。

我就是因为下载的jdk17,下载的安卓demo项目只需要jdk8就行,打包apk一直失败,整神了0.0

2、准备安装的工具包

ttps://developer.android.google.cn/studio/ 这里下载安卓工具,后面的版本参考

下载地址的生成规则:https://dl.google.com/android/repository/文件名

文件名就是:commandlinetools-mac-11479570_latest.zip(根据自己的环境选择对应的

我是采用的在dockerfile直接下载的方式

cmdline-tools 版本 最低 JDK Mac Linux Windows

13.0(latest) 17 commandlinetools-mac-11479570_latest.zip commandlinetools-linux-11479570_latest.zip commandlinetools-win-11479570_latest.zip

12.0 17 commandlinetools-mac-11076708_latest.zip commandlinetools-linux-11076708_latest.zip commandlinetools-win-11076708_latest.zip

11.0 17 commandlinetools-mac-10406996_latest.zip commandlinetools-linux-10406996_latest.zip commandlinetools-win-10406996_latest.zip

10.0 11 commandlinetools-mac-9862592_latest.zip commandlinetools-linux-9862592_latest.zip commandlinetools-win-9862592_latest.zip

9.0 11 commandlinetools-mac-9477386_latest.zip commandlinetools-linux-9477386_latest.zip commandlinetools-win-9477386_latest.zip

8.0 8 commandlinetools-mac-9123335_latest.zip commandlinetools-linux-9123335_latest.zip commandlinetools-win-9123335_latest.zip

二、制作镜像

1、下载jdk版本的压缩包,传到Linux上面,编写dockerfile

1)使用curl拉取远程的安卓包

bash 复制代码
FROM ***********/base/ubuntu-base:python3.10

#RUN pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
#RUN pip config set global.trusted-host mirrors.cloud.tencent.com

WORKDIR /home/work

ADD ./*.py /home/work
# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java

#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
CMD java -version

RUN mkdir -p /usr/local/androidSdk

# 设置变量
ENV ANDROID_HOME="/usr/local/androidSdk" \
    SDK_TOOL_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"

RUN echo  "Y" |  apt install unzip
RUN apt update
RUN echo  "Y" |  apt install curl

# 创建android sdk目录,并下载 sdkmanager
RUN  cd $ANDROID_HOME \
     && curl -o sdk.zip $SDK_TOOL_URL \
     && unzip sdk.zip \
     && rm sdk.zip

# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p ${ANDROID_HOME}/sdk/cmdline-tools/latest 

RUN cp -r ${ANDROID_HOME}/cmdline-tools/* ${ANDROID_HOME}/sdk/cmdline-tools/latest

# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
RUN echo "Y" | ${ANDROID_HOME}/sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3"

# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV PATH ${ANDROID_HOME}/sdk/cmdline-tools:${ANDROID_HOME}/sdk/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${PATH}

RUN apt update
RUN pip install oss2

RUN apt clean

2)上传安卓的工具包,解压使用,使用shell脚本

bash 复制代码
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work

# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java

#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

RUN apt update
RUN echo  "Y" |  apt install unzip

# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY commandlinetools-linux-11076708_latest.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip commandlinetools-linux-11076708_latest.zip -d $ANDROID_DIR

# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/cmdline-tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/cmdline-tools/*  $ANDROID_DIR/sdk/cmdline-tools/latest
RUN rm -rf $ANDROID_DIR/cmdline-tools

# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/cmdline-tools/latest
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_DIR}/sdk/cmdline-tools:${ANDROID_HOME}/platform-tools:${PATH}

# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"

#RUN "y" | $ANDROID_HOME/bin/sdkmanager "platforms;android-28"
#RUN "y" | $ANDROID_HOME/bin/sdkmanager "platforms;android-27"
#RUN "y" | $ANDROID_HOME/bin/sdkmanager "build-tools;28.0.3"
#RUN "y" | $ANDROID_HOME/bin/sdkmanager "build-tools;27.0.3"

#复制脚本到容器内部
COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
RUN $ANDROID_HOME/script.sh

3、不使用脚本

bash 复制代码
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work

# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java

#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

RUN apt update
RUN echo  "Y" |  apt install unzip

# 将当前项目  Android Project 复制到容器----------------------------------------
COPY android_hello_world-master.zip /home/work
RUN cd /home/work && unzip android_hello_world-master.zip -d /home/work
#-----------------------------上面的Android roject是用来验证容器镜像的,可以忽略

# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY commandlinetools-linux-11076708_latest.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip commandlinetools-linux-11076708_latest.zip -d $ANDROID_DIR

# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/cmdline-tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/cmdline-tools/*  $ANDROID_DIR/sdk/cmdline-tools/latest
RUN rm -rf $ANDROID_DIR/cmdline-tools

# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/cmdline-tools/latest
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_DIR}/sdk/cmdline-tools:${ANDROID_HOME}/platform-tools:${PATH}

# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"

RUN echo 'y' |  /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'platforms;android-28'
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'platforms;android-27'
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'build-tools;28.0.3'
RUN echo 'y' |  /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'build-tools;27.0.3'

# 上面两种方式都未安装成功,采用下面脚本的方式成功了

#复制脚本到容器内部
#COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
#RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
#RUN $ANDROID_HOME/script.sh

注意这里的基础镜像你们根据你们的实际 情况修改,改成Ubuntu的镜像即可。

2、构建镜像

docker build -t /jenkins/android-package:0.0.1 .

3、push镜像

docker push /jenkins/android-package:0.0.1

三、遇到的问题

1、jdk和Android的版本问题,参考上面的即可

2、 Either specify it explicitly with --sdk_root= or move this package into its expected location: <sdk>/cmdline-tools/latest/

解决方案:修改路径,将文件放到latest的文件夹下,具体操作如图。

3、安装好镜像未报错,进去容器验证发现未安装成功。

ls -al /opt/app/android-sdk/sdk/platforms

ls -al /opt/app/android-sdk/sdk/build-tools

解决方案:创建sh脚本,放入镜像中,然后执行即可。

链接: https://pan.baidu.com/s/10rm4eYBWsLt7_iFBrnHhlw 提取码: a19z

再次build:docker build -t android-package:v1.0 .

进入容器查看,文件已拉取下来。

4、验证打包apk时,jdk找不到

四、使用镜像打包安卓项目apk

1、进入容器,然后创建local.properties文件并指定android sdk路径

进入EmptyProject文件夹,输入如下命令

touch local.properties

echo "sdk.dir=/opt/app/android-sdk/sdk" > local.properties

bash 复制代码
./gradlew assembleRelease

最后下载很慢gradle:

仓库服务

改这个地方,速度起飞!

又报错了,看提示是安装的tools少了,修改dockerfile文件

bash 复制代码
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work

# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java

#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

RUN apt update
RUN echo  "Y" |  apt install unzip

# 将当前项目  Android Project 复制到容器----------------------------------------
COPY android_hello_world-master.zip /home/work
RUN cd /home/work && unzip android_hello_world-master.zip -d /home/work
#-----------------------------上面的Android roject是用来验证容器镜像的,可以忽略

# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY commandlinetools-linux-11076708_latest.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip commandlinetools-linux-11076708_latest.zip -d $ANDROID_DIR

# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/cmdline-tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/cmdline-tools/*  $ANDROID_DIR/sdk/cmdline-tools/latest
RUN rm -rf $ANDROID_DIR/cmdline-tools

# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/cmdline-tools/latest
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_DIR}/sdk/cmdline-tools:${ANDROID_HOME}/platform-tools:${PATH}

# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"

RUN echo 'y' |  /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;33.0.0" "build-tools;31.0.0" "build-tools;30.0.3" "build-tools;30.0.2"  "build-tools;30.0.0" "build-tools;29.0.3" "build-tools;29.0.2" "build-tools;29.0.1" "build-tools;29.0.0" "build-tools;28.0.3" "build-tools;28.0.2" "build-tools;27.0.3"
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-21" "platforms;android-22" "platforms;android-23" "platforms;android-24" "platforms;android-25" "platforms;android-26" "platforms;android-27" "platforms;android-28" "platforms;android-29"  "platforms;android-30" "platforms;android-31" "platforms;android-32" "platforms;android-33"

# 上面两种方式都未安装成功,采用下面脚本的方式成功了

#复制脚本到容器内部
#COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
#RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
#RUN $ANDROID_HOME/script.sh

等待命令执行完成(第一次会比较慢),最终apk地址app/build/outputs/apk/release/app-release.apk

至此我们完成了在docker上搭建了android打包编译环境,并成功编译出了apk文件。

五、写在最后(千万要注意jdk和 gradle的版本,坑 ,巨坑 )

链接: https://pan.baidu.com/s/1Emjchg1xm-FbD6OAHrEeQg 提取码: dqa5

按照下面的版本对应即可打包成功!

git clone https://github.com/hellsam/EmptyProject.git

jdk版本1.8

bash 复制代码
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work

RUN apt update
RUN echo  "Y" |  apt install unzip

RUN apt update
RUN echo "y" | apt install openjdk-8-jdk

# 拷贝JDK安装包到容器中
# 安装jdk
#RUN mkdir -p /usr/app/java
#COPY jdk-8u401-linux-x64.tar.gz /usr/app/java
#RUN tar -czvf jdk-8u401-linux-x64.tar.gz /usr/app/java

#设置JAVA_HOME的环境变量
#ENV JAVA_HOME=/usr/app/java/jdk1.8.0_401
#ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#ENV PATH=$JAVA_HOME/bin:$PATH


# 将当前项目  Android Project 复制到容器----------------------------------------
COPY EmptyProject.zip /home/work
RUN cd /home/work && unzip EmptyProject.zip -d /home/work
#-----------------------------上面的Android roject是用来验证容器镜像的,可以忽略

# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY sdk-tools-linux-4333796.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip sdk-tools-linux-4333796.zip -d $ANDROID_DIR

# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/tools/*  $ANDROID_DIR/sdk/tools/latest
RUN rm -rf $ANDROID_DIR/tools

# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/tools
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_HOME}:${ANDROID_HOME}/platform-tools:${PATH}

# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"

#RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;33.0.0" "build-tools;31.0.0" "build-tools;30.0.3" "build-tools;30.0.2"  "build-tools;30.0.0" "build-tools;29.0.3" "build-tools;29.0.2" "build-tools;29.0.1" "build-tools;29.0.0" "build-tools;28.0.3" "build-tools;28.0.2" "build-tools;27.0.3"
#RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-21" "platforms;android-22" "platforms;android-23" "platforms;android-24" "platforms;android-25" "platforms;android-26" "platforms;android-27" "platforms;android-28" "platforms;android-29"  "platforms;android-30" "platforms;android-31" "platforms;android-32" "platforms;android-33"

RUN echo 'y' | /opt/app/android-sdk/sdk/tools/latest/bin/sdkmanager "platforms;android-28" "platforms;android-27"
RUN echo 'y' | /opt/app/android-sdk/sdk/tools/latest/bin/sdkmanager "build-tools;28.0.3" "build-tools;27.0.3"
# 上面两种方式都未安装成功,采用下面脚本的方式成功了

#复制脚本到容器内部
#COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
#RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
#RUN $ANDROID_HOME/script.sh

跟着图中的命令执行,最后等待打包apk即可。

注意 :代码里面的 这个地址需要换成镜像 地址,不然下载贼慢!

distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-4.4-all.zip

六、参考文献

docker+jenkins+android环境搭建(使用dockerfile) - 掘金

在docker搭建android编译打包环境实践 - 简书

Android cmdline-tools 版本与其最小JDK关系_java11对应的android sdk tools-linux版本是多少-CSDN博客

Linux 环境下 搭建Android SDK 和Android NDK-腾讯云开发者社区-腾讯云

zsh: command not found解决方式 - 简书

Index of /gradle/

在 Linux 系统上下载 Android SDK_linux中androidsdk环境变量配置-CSDN博客

附:安卓版本表

使用sdkmanager --list命令显示所有已经安装的和未安装的packages,如下:

Installed packages:

Path Version Description Location

build-tools;24.0.3 24.0.3 Android SDK Build-Tools 24.0.3 build-tools/24.0.3/

build-tools;25.0.3 25.0.3 Android SDK Build-Tools 25.0.3 build-tools/25.0.3/

emulator 26.1.3 Android Emulator emulator/

extras;android;m2repository 47.0.0 Android Support Repository extras/android/m2repository/

extras;google;m2repository 57 Google Repository extras/google/m2repository/

extras;m2reposi...ut-solver;1.0.2 1 Solver for ConstraintLayout 1.0.2 extras/m2reposi...t-solver/1.0.2/

extras;m2reposi...nt-layout;1.0.2 1 ConstraintLayout for Android 1... extras/m2reposi...t-layout/1.0.2/

patcher;v4 1 SDK Patch Applier v4 patcher/v4/

platform-tools 26.0.0 Android SDK Platform-Tools 26 platform-tools/

platforms;android-24 2 Android SDK Platform 24 platforms/android-24/

platforms;android-25 3 Android SDK Platform 25 platforms/android-25/

tools 26.0.2 Android SDK Tools tools/

Available Packages:

Path Version Description

add-ons;addon-g..._apis-google-15 3 Google APIs

add-ons;addon-g..._apis-google-16 4 Google APIs

add-ons;addon-g..._apis-google-17 4 Google APIs

add-ons;addon-g..._apis-google-18 4 Google APIs

add-ons;addon-g..._apis-google-19 20 Google APIs

add-ons;addon-g..._apis-google-21 1 Google APIs

add-ons;addon-g..._apis-google-22 1 Google APIs

add-ons;addon-g..._apis-google-23 1 Google APIs

add-ons;addon-g..._apis-google-24 1 Google APIs

add-ons;addon-g...e_gdk-google-19 11 Glass Development Kit Preview

build-tools;19.1.0 19.1.0 Android SDK Build-Tools 19.1

build-tools;20.0.0 20.0.0 Android SDK Build-Tools 20

build-tools;21.1.2 21.1.2 Android SDK Build-Tools 21.1.2

build-tools;22.0.1 22.0.1 Android SDK Build-Tools 22.0.1

build-tools;23.0.1 23.0.1 Android SDK Build-Tools 23.0.1

build-tools;23.0.2 23.0.2 Android SDK Build-Tools 23.0.2

build-tools;23.0.3 23.0.3 Android SDK Build-Tools 23.0.3

build-tools;24.0.0 24.0.0 Android SDK Build-Tools 24

build-tools;24.0.1 24.0.1 Android SDK Build-Tools 24.0.1

build-tools;24.0.2 24.0.2 Android SDK Build-Tools 24.0.2

build-tools;24.0.3 24.0.3 Android SDK Build-Tools 24.0.3

build-tools;25.0.0 25.0.0 Android SDK Build-Tools 25

build-tools;25.0.1 25.0.1 Android SDK Build-Tools 25.0.1

build-tools;25.0.2 25.0.2 Android SDK Build-Tools 25.0.2

build-tools;25.0.3 25.0.3 Android SDK Build-Tools 25.0.3

build-tools;26.0.0 26.0.0 Android SDK Build-Tools 26

build-tools;26.0.1 26.0.1 Android SDK Build-Tools 26.0.1

cmake;3.6.4111459 3.6.4111459 CMake 3.6.4111459

docs 1 Documentation for Android SDK

emulator 26.1.3 Android Emulator

extras;android;gapid;1 1.0.3 GPU Debugging tools

extras;android;gapid;3 3.1.0 GPU Debugging tools

extras;android;m2repository 47.0.0 Android Support Repository

extras;google;auto 1.1 Android Auto Desktop Head Unit...

extras;google;g...e_play_services 43 Google Play services

相关推荐
SelectDB11 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽18 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn866 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker