一、安装包准备
1、准备jdk
下载地址:Java Downloads | Oracle
注意版本!!!!!! 我下载的jdk17,不然后面构建镜像报错,就是版本不对
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
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
注意这里的基础镜像你们根据你们的实际 情况修改,改成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的文件夹下,具体操作如图。
参考:docker+jenkins+android环境搭建(使用dockerfile) - 掘金
在docker搭建android编译打包环境实践 - 简书
Android cmdline-tools 版本与其最小JDK关系_java11对应的android sdk tools-linux版本是多少-CSDN博客
Linux 环境下 搭建Android SDK 和Android NDK-腾讯云开发者社区-腾讯云