Android之Gradle自动化打包实战

这篇具有很好参考价值的文章主要介绍了Android之Gradle自动化打包实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

解放双手,双击桌面快捷方式生成apk包,基于Gradle、bat文件让开发人员告别打包烦扰!

前不久有一个Unity3D研发的小仙女在羽毛球场问我关于Android Studio打apk的一些事情,她说他们运营和测试隔三差五的就坐着她旁边要她重复性的打包(估计是那群痴汉打着工作的幌子实际上干着撩妹的活惹火了这位认真敬业的小姐姐),那么有没有省力一点的办法快速打包?

一直以来,对于某些频繁进行打包工作的业务部开发人员来说,打包工作不仅繁琐冗余而且费时费力。如何快速、高效的解决频繁出包以及提高生产效率解放生产力是我们一直在思考的问题。有没有一种办法比如我只想要双击桌面快捷方式然后就打包成APK 接着在保存到自定义盘符路径? 答案是有的。我们知道Android Studio是基于Gradle来进行快速构建项目,Gradle本质是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。 由于一些论坛上的文章是基于Android2.X版本来进行解释说明但是笔者通过这几天的实战(Android Studio版本是3.0以上)发现网上的一些办法已经用不了且新版本自然而然增加了一些之前未提及的新特性,所以本文主要是针对Android Studio3.0版本以上以及Gradle进行一些基本的内容介绍以及如何通过组合技巧实现快速打包;以及针对某一些特定的开发场景如何通过 Java + Gradle去思考并解决问题)。

PS:文章使用到的源码请见末尾。

配置环境:

由于我们这里是基于Gradle进行后面的操作,所以我们首先需集成下Gradle的环境变量(前提是需要配置好JDK)如何配置Gradle环境?由于Android Studio里面内置了Gradle,这里我就快速提供Gradle环境配置方案(当然也可以自行谷歌或者百度):

1:找到自己Android Studio目录下的gradle文件。这是笔者的Android Studio目录下的gradle文件路径: C:\Program Files\Android\Android Studio\gradle\gradle-4.1\bin 找到这个目录以后,按照配置JDK那样首先将其编辑到系统变量 GRADLE_HOME

Android之Gradle自动化打包实战

GRADLE_HOME

2:步骤一完成以后将 GRADLE_HOME 添加到系统变量,如下图

Android之Gradle自动化打包实战

添加系统变量

3:上面两个步骤执行完毕以后。我们可以测试下Gradle环境是否安装成功。首先打开cmd命令窗口 输入 gradle (第一次会比较慢)出现以下信息即为成功。或者在命令窗口 输入 gradle -version 如果可以显示版本信息即为环境配置成功

Android之Gradle自动化打包实战

测试环境配置

环境配置好以后,我们先回到Android Studio上面。使用Android Studio新建一个项目的时候,(将工具视图切换成Android 也就是下面的红色矩形)系统会为我们自动生成2个build.gradle文件。

Android之Gradle自动化打包实战

Android Studio生成的gradle

Android开发一般将图上的绿色矩形描述为 项目的gradle,将黄色矩形称为app.gradle。首先我们看下项目的gradle:

Android之Gradle自动化打包实战

Project.gradle

首先,这里的两段英文注释写的非常好,翻译过来就是:( Top-level build file ......)顶级构建文件,可以在所有子项目/模块中添加常见的配置选项;(NOTE: Do not place ......)注意:不要将你的应用程序依赖项放在这里;它们属于单独的模块构建 .gradle文件。

我们知道Project.gradle文件主要是全局的gradle构建脚本,这里的jcenter()、google()代码,表示的是引用托管仓库的名称;这里的classpath主要是申明插件的版本号(这里的版本号就是3.0.0)。总体来说项目的gradle文件是顶层的配置文件,部分依赖使用也会在这里进行对应的配置。

看完了最顶层的gradle文件在来看看app的gradle文件,这个文件是我们经常打交道的地方,配置签名信息,渠道信息,配置各种第三方库以及依赖等等。比如这个文件有我们最大的android { }标签以及配置依赖的dependencies{ }标签。dependencies标签里面就是应用内使用到的各种依赖比如我们的OkHttp、Glide等等;关于android{ }的配置因为内容较多,下面是在网上收集到的该标签内的一些标签资料:

defaultConfig{ } 默认配置,是ProductFlavor类型。它共享给其他ProductFlavor使用
sourceSets{ } 源文件目录设置,是AndroidSourceSet类型。
buildTypes{ } BuildType类型
signingConfigs{ } 签名配置,SigningConfig类型
productFlavors{ } 产品风格配置,ProductFlavor类型
testOptions{ } 测试配置,TestOptions类型
aaptOptions{ } aapt配置,AaptOptions类型
lintOptions{ } lint配置,LintOptions类型
dexOptions{ } dex配置,DexOptions类型
compileOptions{ } 编译配置,CompileOptions类型
packagingOptions{ } PackagingOptions类型
jacoco{ } JacocoExtension类型。 用于设定 jacoco版本
splits{ } Splits类型

下面就是开始Gradle文件的常用配置:

A:占位符

在使用友盟进行渠道统计常用的做法是 使用占位符,比如我们可以在AndroidManifest.xml文件使用meta-data进行信息的配置。

Android之Gradle自动化打包实战

占位符

然后使用的话,如下图:

Android之Gradle自动化打包实战

占位符使用

B:签名

签名,是android标签内大家经常使用到的,由于Android 7.0加入了新的签名机制(也就是V2签名)针对这个问题的解决方式可以参考这篇文章 Android-V1、V2签名,因此我们可以直接在debug和release标签中加入v1SigningEnabled true 、v2SigningEnabled true 规避使用风险

下面是加入新签名机制以及原来大家比较熟悉的写法:

Android之Gradle自动化打包实战

sign - 1

这里还给大家提供一种关于签名信息的写法(拓展性比第一种较强),首先,我们在app文件的根目录下定义一个文件 signing.properties ,然后写上具体的属性值 (具体的说明如代码截图)

Android之Gradle自动化打包实战
签名配置文件

由于Gradle是一门脚本,既然是脚本那么它肯定内置了一些函数(注意:Gradle的函数是在app gradle文件内置的标签外 进行编写)给我们操作调用。因为将签名信息写到了这里的配置文件,所以可以通过Gradle去读取信息 然后进行赋值,代码如下:

Android之Gradle自动化打包实战
读取签名文件函数

有了读取签名文件的函数,我们就可以进行Alias、password的赋值。

Android之Gradle自动化打包实战

签名函数使用

C:多渠道包配置

Android Studio给我们提供的多渠道打包方案是使用productFlavors标签配置渠道信息,但是新版本下直接使用这个productFlavors标签会报错,工具要求我们在defaultConfig标签下新增flavorDimensions,如果不使用flavorDimensions关键字,编译会报错:

Android之Gradle自动化打包实战

新特性

D:自定义apk输出路径

传统的打包操作流程执行编译以及签名后生成的apk默认是 项目 \build\outputs\apk 这个路径下面,那现在我想指定apk输出的文件位置(比如我现在想让这个apk输出到 c盘下面的out_apk文件夹下)该如何操作?

Android之Gradle自动化打包实战

自定义apk输出路径

其中这里的红色矩形是对上面签名第二种方法的补充说明,这里的buildTypes标签需要写在signingConfigs标签后面,否则很容易编译错误,这个是笔者遇到的问题;蓝色矩形的代码块主要是首先判断是debug还是release版本,如果是release版本就将apk输入到这个指定盘符。

好了,说了这么多gradle文件的配置,下面就开始我们的打包工作。

首先是我们的传统打签名包:

点击Android Studio 顶部Tab , Build —— Generate Sign Apk 然后出现下面的界面:

Android之Gradle自动化打包实战

传统方式

配置好基本信息以后,点击next,勾选V1、V2等一些配置即可完成签名打包。

第二种:在Android Studio 底部Tab的 Terminal窗口 输入 gradle a 命令本质就是dos操作),来帮助我们打包

Android之Gradle自动化打包实战

gradle a打包

以上两种打包方式都是传统的打包方式,那么有没有更简单的操作?这种简单的操作类似我 在PC上面点击一个快捷方式就给我生成apk包?答案在开头已经说了是有的。

A:首先,我们在项目根目录下创建一个指定的文件夹(用于编译跑脚本用),这个文件一般定义为 .config文件(记住:前面有个 . )

B:然后,在这个文件夹内创建 build.bat文件。可能你会问什么是bat文件?bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。当我们双击bat文件的时候,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。所以,我们只需要在这个bat文件里面写下相应的命令进行操作即可

C:既然现在我们需要在bat文件里面写命令,那么gradle里面有那些可以执行的打包命令?下面是收集到的一些资料,命令如下:

1:编译所有productFlavor及对应所有buildType的apk:
gradle assemble //仅仅执行项目打包所必须的任务集
gradle build //执行项目打包所必须的任务集,以及执行自动化测试,所以会较慢
如果当前Project包含多个Module,在Project根目录执行gradle assemble会编译所有的Module
2:编译指定productFlavor及buildType的apk
gradle assemble[productFlavor][buildType] //如果缺失某参数,则会把该参数的所有配置都进行编译,即如果运行gradle assembleflavor,则会编译出flavor所有buildType的apk
例如:
gradle assemble
gradle assembleflavorRelease
gradle assembleflavorDebug
注意:gradle支持命令缩写,上面两个命令也可以写成如下格式
$gradle a
$gradle ass
$gradle aR
$gradle assflavorR
$gradle aD
$gradle assflavorD

D:既然dos命令确定了,我们就可以写bat文件进行测试了:

Android之Gradle自动化打包实战

E:接下来我们就可以将这个build.bat文件,设置为桌面快捷方式,然后双击,双击以后会弹出cmd窗口进行打包然后去指定的文件夹拿到apk即可。

以上步骤的前提是你需要配置好Gradle运行环境、熟悉Gradle的基本命令以及必要的耐心和不怕失败的勇气。

项目源码文章来源地址https://www.toymoban.com/news/detail-445524.html

到了这里,关于Android之Gradle自动化打包实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gradle 自动化构建开源工具

    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。 面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。 1、gradle官网下载:https://gradle.org/releases/ 2、解压下载Gradle包,配置环境变量 新建系统环境 GRADLE_HOME,

    2023年04月22日
    浏览(26)
  • jenkins-自动化打包部署

    环境:         centos 7.2或者更新         rmp包:官方下载地址 Redhat Jenkins Packages         java-1.8.0 安装: 配置:jenkins 配置文件 /etc/sysconfig/jenkins  ,可以根据需求自行修改 访问web 并进行配置 稍等一会,就可以正常登录了 根据需要安装自定义插件,本次选择是推

    2024年02月13日
    浏览(36)
  • Jenkins自动化打包脚本

    jenkins可以设置定时任务打包,也已手动点按钮打包,还可以通过执行http请求打包,今天我们就通过shell脚本,通过curl命令进行jenkins打包。 2.1 在jenkins上构建项目 设置触发器

    2024年02月13日
    浏览(29)
  • jenkins编译打包及自动化部署

    一:简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 官网文档:https://www.jenkins.io/zh/doc/ 二:下载及安装(Windows为例) 下载Jenkins安装包 需要安装jdk(11和17版本

    2024年03月21日
    浏览(40)
  • Selenium自动化脚本打包exe文件

    近期由于工作需要写了一个selenium自动化脚本,但是每次运行的时候都要打开Pycharm,因此本人直接使用Python第三方打包库PyInstaller将py文件打包成一个可执行的exe文件,在使用时无需安装Python也可以点击运行。 PyInstaller是一个使用较为简单便捷的打包套件,只需要几行命令即可

    2023年04月08日
    浏览(81)
  • Unity 基于Jenkins自动化打包流程

    什么是Jenkins?         Jenkins是一款开源 CICD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 Jenkins的下载与安卓 直接搜索jenkins进入官网下在LTS(稳定版本)下载地址:https://www.jen

    2024年02月08日
    浏览(35)
  • Unity 使用.bat自动化打包Apk

    首先创建一个start.bat脚本内容如下 start cmd /c call build.bat      --新建一个CMD窗口执行另外一个.bat文件 cd G:AndroidStudioProjectTest --进入到AndroidStudioProject文件夹中 ./gradlew clean project     --执行gradle的清除缓存命令 然后创建一个 build.bat文件 内容如下   进入到Unity的安装目录Edi

    2024年02月12日
    浏览(29)
  • 17.Jenkins完成自动化 拉取,编译,打包,部署

    1.1安装gitee插件到jenkins  gitee默认不允许内网触发。----必须要配置内网穿透 NATAPP -       思考: 我们的项目和jenkins是不是都在一台服务器上。因为jenkins它所在的服务器非常耗费资源,因为jenkins本身要集成很多软件。如果这时项目也部署到当作jenkins所在的服务器,势必会导致

    2024年02月04日
    浏览(43)
  • Jenkins的环境部署,(打包、发布、部署、自动化测试)

    一、Tomcat环境安装 1.安装JDK(Java环境) JDK下载地址:Java Downloads | Oracle 安装好后在系统环境变量里配置环境变量: ①添加JAVA_HOME 变量名:JAVA_HOME 变量值:C:Program FilesJavajdk1.8.0_181(根据自己的实际路径配置) ②添加CLASSPATH 变量名:CLASSPATH 变量值:.;%JAVA_HOME%libdt.jar;%J

    2024年01月18日
    浏览(34)
  • 【uniapp】Uniapp cli 自动化打包脚本实现

    通常使用uniapp开发app时,大多数会使用项目的云服务打包,否则的话再借助原生会变得极其复杂,还要去安装对应大内存的环境。如果恰好此时,你有一个需求是,可以随意的更换logo和封面、标题切换成另外一个app,那么很明显你的HBuilderX维护起来是非常复杂的,如果我们想

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包