使用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

相关推荐
xuanwojiuxin22 分钟前
linux panic-propagation
linux·运维·服务器
藥瓿亭2 小时前
K8S认证|CKS题库+答案| 9. 网络策略 NetworkPolicy
linux·运维·docker·云原生·容器·kubernetes·cks
955.2 小时前
k8s从入门到放弃之Pod的容器探针检测
云原生·容器·kubernetes
LFloyue3 小时前
Linux离线(zip方式)安装docker
linux·docker
liuzhenghua663 小时前
Python任务调度模型
java·运维·python
黎相思3 小时前
应用层自定义协议与序列化
运维·服务器·网络
测试开发Kevin4 小时前
详解Jenkins Pipeline 中git 命令的使用方法
运维·jenkins
什么半岛铁盒4 小时前
Linux线程与进程关系及底层实现
java·linux·运维
yunken284 小时前
docker容器保存为不依赖基础镜像的独立镜像方法
java·docker·容器
langmeng1104 小时前
使用docker在3台服务器上搭建基于版本redis 6.x的一主两从模式
运维·redis·docker·容器·集群