使用docker实现Android的自动化部署(二)

版权声明:本文为博主原创文章,可以随意转载,但请附原地址或原作者名。谢谢! https://blog.csdn.net/farley119/article/details/82584974

引言

 在上节中我们熟悉了docker的安装及基本使用,这节开始做Android的自动化部署

制作基础镜像

  1. 先创建一个basedocker文件夹,里面放我们这次制作镜像需要用到的东西,后面会把它制作成我们的基础镜像。
    这里写图片描述
    通过上面一节我们已经知道,要制作镜像肯定少不了dockerfile这个关键文件,其次我们做Android开发也知道,打包肯定需要用到Android SDK中的tools工具包,所以下面我们把这两项先放进来
    这里写图片描述
    如图所示就是我创建好的文档

  2. dockerfile的编辑,这一步也是最关键的,下面我直接把代码贴上来我们一步一步分析:


FROM ubuntu:16.04   #这个是导入我们需要的打包环境
MAINTAINER feign "fuyang@thinker.vc" #这个类似于作者
#下面我们给我们的打包环境安装了一些列后面会用到的包
RUN apt-get update -qq && \
    apt-get install -y --no-install-recommends  openjdk-8-jdk \
      libc6-i386 \
      lib32stdc++6 \
      lib32gcc1 \
      lib32ncurses5 \
      lib32z1 \
    unzip curl && \
    apt-get clean

ENV USR_LOCAL /usr/local 
RUN mkdir -p ${USR_LOCAL}/android-sdk-linux /opt/sdk    
ADD tools ${USR_LOCAL}/android-sdk-linux/tools
#配置容器内一些列变量
ENV ANDROID_HOME ${USR_LOCAL}/android-sdk-linux
ENV ANDROID_SDK ${USR_LOCAL}/android-sdk-linux
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
RUN echo "export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools" >> /etc/profile
#安装Android27的tools这个我们已经下载好了并且在上面已经ADD进来了
ENV ANDROID_SDK_COMPONENTS tools,platform-tools,extra-android-m2repository,extra-google-m2repository,android-27,build-tools-27.0.2,build-tools-27.0.3

RUN echo y | android update sdk --no-ui --all --filter "${ANDROID_SDK_COMPONENTS}"
RUN yes | /usr/local/android-sdk-linux/tools/bin/sdkmanager --licenses  
WORKDIR /opt/sdk  #开始制作我们的镜像 这里有一点需要注意,“yes |”这个命令做好加上 我的Mac不加会报 licenses无权限,这个Google官网已经给出了解决方案
CMD ["./gradlew","assemblerelease"]  # 我们的打包命令
  1. 开始制作,上面我们已经把我们的dockerfile准备完善了,下面就可以开始制作我们的基础镜像了。打开终端
docker build -t android:27 /Users/Farley/MyAndroidProject/basedocker 

大概需要运行三五分钟,运行结束后在终端输入:

docker images

就会看到我们制作的镜像了。

使用镜像打包

 既然我们的基础镜像制作好了,那么开始打包吧。

docker run --rm -v path/xx/xx:/opt/sdk  android:27 ./gradlew  assembleRelease

运行此命令,上面的path是我们的项目地址。这次大概需要运行一会儿就好。最后会在app/build/outputs/release 下面生成一个不签名的apk。
这样我们的打包目的就达到了。那如果我们需要多渠道、多环境、签名、上传等操作怎么办?且听下回分解。
更多内容请关注公众号“计算机自学平台”

猜你喜欢

转载自blog.csdn.net/farley119/article/details/82584974