关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »如何利用 Docker 环境加速 Android 应用的构建

    如何利用 Docker 环境加速 Android 应用的构建

    2016-01-09 00:00:00 出处:soul_code
    分享

    意义

    极大的缩短安卓开发到测试到产品到渠道的距离。 给安卓程序员减轻负担。 Google做的环境已经特别到位了,放到docker里面明显不会有多大的坑(误,逃)。

    如何利用 Docker 环境加速 Android 应用的构建

    Dockerfile

    https://github.com/lijianying10/FixLinux/blob/master/dockerfiles/androidautobuild/Dockerfile

    团队协作的故事

    在敏捷开发的站立会议上,我作为一个后端程序员发现安卓程序员发布的时间大概是半个小时左右的时间,我觉得时间太长了应该缩短一些,成为了研发这个东西的目的。 但是研究了一段时间之后发现了很多需要解决的问题:

    很多东西是被墙的。 很多依赖不能够复用(各种pom包)。 gradlew怎么能快速安装不需要从网上下载。 自动对齐。 自动签名。 自动混淆。

    考虑范围

    系统底层依赖 JDK Andorid-SDK Gradlew 项目依赖

    构建解释

    建议:使用国外vps构建,不然要等很长时间。

    构建变量

    ENV JAVA_HOME /jdk1.8.0_65
    ENV ANDROID_HOME /opt/android-sdk-linux/
    ENV ANDROID_SDK_FILENAME android-sdk_r24.4.1-linux.tgz
    ENV ANDROID_SDK_URL 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-multilib lib32z1 lib32stdc++6 git wget && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

    安装JDK

    RUN cd / && wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.tar.gz &&/
        tar xf jdk-8u65-linux-x64.tar.gz /
        && rm -rf $JAVA_HOME/src.zip $JAVA_HOME/javafx-src.zip $JAVA_HOME/man /jdk-8u65-linux-x64.tar.gz

    这里使用Cookie来确定同意协议。

    安装SDK

    RUN 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 tools,platform-tools,extra-android-m2repository,android-21
    RUN echo y | android update sdk --no-ui --all --filter android-22,build-tools-21.1.2,build-tools-22.0.1
    因为最好每一个layer控制在1G以内所以这里切割用了两个run。 注意SDK用您项目中需要的最高的版本安装到image里面然后向下安装,不然会出现tool这个文件夹无法运行工具的情况。 注意上面的SDK plateform等都是根据我们的项目来的,详细的摸索一下项目代码就知道依赖什么了。

    准备项目

    使用git clone 同步项目目录。 进行第一次手动构建编译。 命令为:gradlew assembleDebug

    第二点中目的有三个:

    查看项目是否缺少依赖,使用android update sdk 命令来增加安卓sdk依赖包。 自动下载项目中所有的依赖。 安装gradlew。

    需要备份的点有两个

    /root/.gradle?备份这个目录可以在以后自动化构建的时候不需要重复安装gradlew。 $PROJDIR/.gradle项目依赖的备份,备份了。($PROJDIR 为您的项目根目录位置)

    都备份之后下次编译就不需要网络了(容器就不需要梯子了,这点对提升速度很重要)。

    根据项目构建 Image

    因为每个项目的依赖不尽相同所以需要针对项目定制化。大概运行目标如下:

    创建容器。 找个方法同步代码git,FTP,NFS等等方法。 把上面两个备份点放到指定位置等待使用。 执行构建输出。 销毁容器。

    其实只要能做到上面这一点,加一个git hook 加上简单的发布就是一个简单的CI了。

    对齐,签名,混淆

    根据下面参考文档可以对项目的build.gradlew进行调整

    签名是在Android节点下面加入如下代码:

    signingConfigs {
    release{
    
                storeFile file("../xxxxxxx.keystore")
                storePassword "xxxxxx"
                keyAlias "xxxxx"
                keyPassword "xxxxx"
    }}

    在buildTypes 下面的release下面加入如下选项:

    signingConfig signingConfigs.release

    对齐方面根据安卓官方文档说明按照上面两步代码修改之后已经对齐。可以准备安装了。

    混淆(proguard),在buildTypes 下面的 release 下面加入如下选项:

    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    总结

    经过研究以及实战,假如使用普通的笔记本电脑,我们的应用的30多个渠道大概需要使用31分钟的时间来进行构建。 假如使用RancherOS服务器Xeon X5675 两颗CPU 48G内存的刀片服务器构建的时间是1分6秒。

    因为写文章的时间仓促,很多地方写的不明白希望大家能够指出来,方便我改进,另外本人安卓水平非常一般请大神们批评指正。十分感谢。

    注:下面的文献非常具有参考价值。

    主要参考文献

    [1] Building and Running from the Command Line?http://developer.android.com/intl/pt-br/tools/building/building-cmdline.html

    [2] Configuring ProGuard?http://developer.android.com/intl/pt-br/tools/help/proguard.html

    [3] Signing Your Applications?http://developer.android.com/intl/pt-br/tools/publishing/app-signing.html

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。