【Docker容器中安装android打包环境】

Docker容器中安装android打包环境

  • 安装JDK11(前提有个linux的服务器,然后有安装好的docker环境)
  • 安装Gradle
  • 安装SDK
  • ---------------------我是可爱的分界线-----------------------------
  • android打包环境需要如下软件
  • DockerFile文件的内容如下:
  • 宿主机服务器上创建镜像:
  • Jenkins上先配置节点,然后配置任务:

安装JDK11(前提有个linux的服务器,然后有安装好的docker环境)

参照此文章亲测可行
docker run --name android -i -t ubuntu /bin/bash 创建一个容器,给它打个标签是android,它的环境是ubuntu
docker ps -a 查看所有的容器,找到刚创建的容器,复制id记录下来,后面用的到
docker cp jdk-11.0.1_linux-x64_bin.tar.gz d6ca937b8977:/root 把jdk11先用工具上传到linux服务器,然后用这个命令把jdk11拷贝到容器所在的环境
docker start d6ca937b8977 启动容器
docker exec -it d6ca937b8977 /bin/bash 进入容器
cd /root tar -zxvf jdk-11.0.1_linux-x64_bin.tar.gz 解压jdk
mkdir /usr/lib/jvm 创建一个放jdk的目录
mv ~/jdk-11.0.1 /usr/lib/jvm 把刚解压的jdk目录放在新创建的目录上
pwd 查看当前目录

添加环境变量的快速方式
export ANDROID_HOME=/opt/android/sdk
exportPATH= P A T H : {PATH}: PATH:ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
导出docker容器
docker export d6ca937b8977> docker_android.tar

安装Gradle

  1. 下载gradle-7.0.2-all.zip

  2. 安装解压zip的工具(先apt-get update 然后apt-get install unzip 然后unzip xxx.zip)

  3. 解压然后配置环境变量,用Gridle -v
    查看版本号,环境变量配置参考jdk和[这个文章的环境变量],只能参考不能完全抄袭(https://www.10qianwan.com/articledetail/744809.html)

安装SDK

  1. 下载命令行工具Command line tools only
  2. 解压安装这个命令行工具,然后参考

【Docker容器中安装android打包环境】_第1张图片

---------------------我是可爱的分界线-----------------------------

参照上面的资料可以用docker命令创建一个ubuntu的环境下的容器,然后再容器里安装jdk和gradle等环境,相当于一个android的打包环境搞好了,但是需求又来了,领导要求用DockerFile实现。。

android打包环境需要如下软件

【Docker容器中安装android打包环境】_第2张图片
1.需要把这个文件夹的拷贝到服务器宿主机的可读可写目录

DockerFile文件的内容如下:

#依赖镜像名称或镜像ID【必须再本地列表中】
FROM ubuntu
#指定镜像创建者信息
MAINTAINER dsw123
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-11.0.1_linux-x64_bin.tar.gz /usr/lib/jvm
#配置java环境变量
ENV JAVA_HOME /usr/lib/jvm/jdk-11.0.1
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
#更新apt
RUN apt-get update
#获取并安装解压zip的工具
RUN apt-get install unzip -y  
#获取并安装Gid工具
RUN apt-get install git -y

#超级用户
USER root
#创建放Gradle的目录
RUN ["mkdir", "/usr/lib/gradle"]
#Copy文件至Gradle目录
ADD gradle-7.0.2-all.zip /usr/lib/gradle
#设为工作空间(类似cd)
WORKDIR /usr/lib/gradle
#解压Gradle的zip文件至容器某目录
RUN unzip gradle-7.0.2-all.zip && rm gradle-7.0.2-all.zip
#配置gradle环境变量
ENV GRADLE_HOME /usr/lib/gradle/gradle-7.0.2
#配置gradle环境至path
ENV PATH $GRADLE_HOME/bin:$PATH


#创建目录
RUN ["mkdir", "/usr/lib/sdk"]
#Copy文件至sdk目录
ADD commandlinetools-linux-8092744_latest.zip /usr/lib/sdk
#设为工作空间(类似cd)
WORKDIR /usr/lib/sdk
#解压commandlinetools的zip文件至容器某目录
RUN unzip commandlinetools-linux-8092744_latest.zip && rm commandlinetools-linux-8092744_latest.zip

#配置SDK环境变量
ENV ANDROID_SDK_ROOT /usr/lib/sdk
#配置SDK环境至path
ENV PATH $ANDROID_SDK_ROOT:$PATH


#配置commandlinetools环境变量
ENV COMMAND_LINE_TOOLS /usr/lib/sdk/cmdline-tools/bin
ENV PATH $ANDROID_SDK_ROOT/cmdline-tools/bin:$PATH


#设为工作空间(类似cd)
WORKDIR /usr/lib/sdk/cmdline-tools/bin
#RUN yes | sdkmanager --licenses && sdkmanager --update --sdk_root=/usr/lib/sdk/cmdline-tools/latest/ 
#进入显示可安装包
RUN yes | sdkmanager --list --sdk_root=/usr/lib/sdk 
#安装android-28
RUN yes | sdkmanager --install "platforms;android-28" --sdk_root=/usr/lib/sdk 
#安装platform-tools
RUN yes | sdkmanager --install "platform-tools" --sdk_root=/usr/lib/sdk 
#安装build-tools
RUN yes | sdkmanager --install "build-tools;28.0.0" --sdk_root=/usr/lib/sdk
#安装cmdline-tools
RUN yes | sdkmanager --install "cmdline-tools;latest" --sdk_root=/usr/lib/sdk 
#创建目录
RUN ["mkdir", "/usr/lib/android_project"]

宿主机服务器上创建镜像:

需要在DockerFile文件所在的目录下执行此命令
在这里插入图片描述

Jenkins上先配置节点,然后配置任务:

  1. jenkins网站->系统管理->节点管理->新增节点

【Docker容器中安装android打包环境】_第3张图片

  1. 节点下要挂任务,jekins网站->新建任务->构建自由风格的任务->限制项目运行的节点为我们上一步创建的节点,填上其名字->Git下你要编译的代码的地址和分支->执行shell脚本

【Docker容器中安装android打包环境】_第4张图片
上面就是重点,不懂的加vx:2488234525

你可能感兴趣的:(代码版本控制,docker,android,linux)