大家好,我是极客范的本期栏目编辑小友,现在为大家讲解利用Docker环境加速Android应用的构建问题。
意义
大大缩短了从安卓开发到测试到产品到渠道的距离。
减轻安卓程序员的负担。
谷歌的环境已经到位,放入docker显然不会有太多坑(错、逃)。
文件
https://github.com/lijianying 10/FixLinux/blob/master/docker file/androidautoubuild/docker file
团队合作的故事
在敏捷开发的常务会上,作为一个后端程序员,我发现安卓程序员的发布时间大概在半个小时左右,我觉得时间太长了,应该缩短,这也成为了开发这个东西的目的。然而,经过一段时间的研究,许多问题需要解决:
很多东西都有围墙。
许多依赖项不能被重用(各种pom包)。
如何在不从网上下载的情况下快速安装gradlew?
自动校准。
自动签名。
自动混淆。
被考虑在内
系统底层依赖
JDK
安道尔id-SDK
格拉德卢
项目相关性
施工说明
建议:用国外的vps来建,不然要花很长时间。
构建变量
ENV JAVA_HOME /jdk1.8.0_65
ENV ANDROID _ HOME/opt/ANDROID-SDK-Linux/
ENV ANDROID _ SDK _ FILENAME ANDROID-SDK _ r 24 . 4 . 1-Linux . tgz
http://dl.google.com/android/${ANDROID_SDK_FILENAME}
ENV PATH $ { PATH } : $ { ANDROID _ HOME }/tools : $ { ANDROID _ HOME }/platform-tools : $ { JAVA _ HOME }/bin/
潜在依赖性
Gcc,注意我们需要安装32位编译环境和git wget。
RUN sudo apt-get update sudo apt-get install-y gcc-multi lib 32 Z1 lib 32 TDC 6 git wget apt-get clean RM-RF/var/lib/apt/listvar/tmp/*
安装JDK
RUN CD/wget-no-check-cerTIficate-no-cookies-header ' cookie : oraclelicense=accept-securebackup-cookie ' http://download . Oracle.com/OTN-pub/Java/JDK/8u 65-b17/JDK-8u 65-Linux-x64 . tar . gz \
焦油xf jdk-8u65-linux-x64.tar.gz \
RM-RF $ JAVA _ HOME/src . zip $ JAVA _ HOME/JavaFX-src . zip $ JAVA _ HOME/man/JDK-8u 65-Linux-x64 . tar . gz
这里使用Cookie来确定同意协议。
安装SDK
运行cd /opt \
wget -q ${ANDROID_SDK_URL} \
tar-xzf $ { ANDROID _ SDK _ FILENAME } \
rm ${ANDROID_SDK_FILENAME} \
echo y | Android update SDK-no-ui-all-filter工具,平台-工具,extra-android-m2repository,android-21
RUN echo y |安卓更新sdk - no-ui - all - filter安卓-22,构建-工具-21.1.2,构建-工具-22.0.1
因为最好把每一层控制在1G以内,所以这里用两次运行来切割。
请注意,SDK安装在项目所需的最高版本的映像中,然后向下安装,否则工具文件夹将不会运行工具。
注意上面的SDK平台等等都是基于我们的项目,通过详细探究项目代码,你就知道靠什么了。
准备项目
使用git克隆来同步项目目录。
执行第一次手动编译。命令:gradlew汇编bug
第二点有三个目的:
检查项目是否缺少依赖项,使用android update sdk命令增加Android sdk依赖包。
自动下载项目中的所有依赖项。
安装gradlew。
有两点需要备份
/root/。gradle备份这个目录,这样以后自动构建就不需要再安装gradlew了。
备份$PROJDIR/。gradle项目依赖、备份。($PROJDIR是您的项目根目录位置)
备份后,下一次编译就不需要网络了(容器就不需要梯子了,对提升速度很重要)。
根据项目构建图像
因为每个项目的依赖性不同,所以需要针对项目进行定制。大致的操作目标如下:
创建一个容器。
想办法同步代码git、FTP、NFS等等。
将以上两个备份点放在指定位置使用。
执行生成输出。
销毁容器。
事实上,只要你能做到这一点,添加一个git钩子和简单的发布就是一个简单的CI。
对齐、签名、混淆
项目的build.gradlew可以根据以下参考文件进行调整。
签名是在安卓节点下添加以下代码:
签名配置{
发布{
storeFile文件('./