Code Monkey home page Code Monkey logo

android-gradle-build-tool's Introduction

Android Gradle Build Tool

说明

一个工具脚本,帮助 Android 打包,支持 application 项目与 library 项目。

功能列表:

  • 根据项目版本文件,自动更改和升级版本。
  • 更改打包后产物的名称。
  • 收集 Android 打包产物(apk、 aar、proguard 文件等)。
  • 渠道打包(美团式)。

以上所有的功能,默认的,只在执行 assemble 任务时才会执行。同时,本脚本的功能以及目标比较死板,使用者可以根据自己项目的具体情况,进行修改。

使用方式

tool.gradle 脚本追加至 module 的 build.gradle 中,可以直接复制 tool.gradle 中的内容,或者使用 apply 方法。

apply from: 'path/to/tool.gradle'

所有功能,支持以参数形式进行开关,可以在 gradle.properties 文件中配置,也可以使用 Gradle 执行参数。

所有功能中,如果 开关参数 没有设置,或者设置的值为空,则表示不开启该功能(无需参数值的除外)。

自动升级版本号

参数名称: verFile ,参数值指向版本信息文件,如果文件不存在,会自动创建。开关参数

在此脚本中,版本信息文件,有 3 个字段,hVerNamelVerNameverCode ,分别对应版本名称高位,版本名称低位,版本号。
最终生成的 release 产物的版本名称为 hVerName ,版本号为 verCode ; debug 产物的版本名称为 hVerName.lVerName ,版本号为 verCode
一次打包完成之后,lVerNameverCode 字段均会自动增加 1 ,而从实现版本自动增加的功能。

例如对于一个版本文件信息如下:

hVerName=1.2.3
lVerName=2
verCode=226

release 产物的版本名称为 1.2.3 ,版本号为 226 ; debug 产物的版本名称为 1.2.3.2 ,版本号为 226
完成这次打包后,hVerName 值为 1.2.3lVerName 值为 3verCode 值为 227

配置方式:

  • 方法1:gradle.properties 文件中添加以下内容:

    verFile=path/to/your/version/file
    
  • 方法2:Gradle 执行时添加参数:

    -PverFile=path/to/your/version/file
    

更改打包产物的文件名称

参数名称:changeOutputName ,无需参数值。开关参数
参数名称:proName ,参数值为该项目的名称,如果没有设置该参数,则默认使用项目名称。

默认的 Android Gradle 打包时,生成 apk 或者 aar 文件的名称为 {projectName}-{flavor}-{buildType}.apk(aar)
现在此基础上,添加了版本名称和版本号的信息,最终生成的文件名称为 {proName}-{flavor}-{buildType}-{versionName}-{versionCode}.apk(aar)

配置方式:

  • 方法1:gradle.properties 文件中添加以下内容:

    changeOutputName
    proName=your_project_name
    
  • 方法2:Gradle 执行时添加参数:

    -PchangeOutputName -PproName=your_project_name
    

收集打包产物

参数名称:outputs ,参数值生成产物存放的目录,如果目录不存在,会自动创建。开关参数
参数名称:proName ,同 更改打包产物的文件名称 中的 proName 意义和作用相同。

默认的 Android Gradle 打包时,生成的 apk 等文件,存放在项目的 build 文件夹下,每次正式打包后,需要手动复制存放,太麻烦。
此功能,在打包完成后,自动收集有用的文件,存放到对应的目录。

所谓的对应的目录如下:

  • apk(aar):{outputs}/{proName}/{date-versionName-versionCode}/{flavor}-{buildType}/apk(aar)/
  • dex:{outputs}/{proName}/{date-versionName-versionCode}/{flavor}-{buildType}/dex/
  • proguard 混淆日志文件:{outputs}/{proName}/{date-versionName-versionCode}/{flavor}-{buildType}/mapping/
  • proguard 混淆生成的 jar 文件:{outputs}/{proName}/{date-versionName-versionCode}/{flavor}-{buildType}/jar/
  • manifest merge 后的 AndroidManifest 文件:{outputs}/{proName}/{date-versionName-versionCode}/{flavor}-{buildType}/manifest/

配置方式:

  • 方法1:gradle.properties 文件中添加以下内容:

    outputs=path/to/your/outputs/folder
    proName=your_project_name
    
  • 方法2:Gradle 执行时添加参数:

    -Poutputs=path/to/your/outputs/folder -PproName=your_project_name
    

渠道打包

此功能需要开启 收集打包功能

参数名称:channelFile ,参数值生成产物存放的目录,如果目录不存在,会自动创建。开关参数

生成的渠道包存放在 {outputs}/{proName}/{date-versionName-versionCode}/{flavor}-{buildType}/channel/ 文件夹中。

关于渠道列表文件的每一行内容,有以下准则:

  • 一行只有一个渠道号。
  • 每一行均需要含有 - 字符。
  • - 字符前的内容为写入 META-INF/ 中的渠道文件的名称,字符后的内容为 apk 文件名称追加的内容。
  • # 开头的行将会被忽略。

例如,在这么一个渠道列表文件中:

    #channel_channel1-channel1
    channel_channel2-channel2

第一行会被自动忽略;
第二行为有效的数据,写入 META-INF/ 中的渠道文件名称为 channel_channel2 ,生成的渠道 apk 文件的名称将会追加 -channel2

配置方式:

  • 方法1:gradle.properties 文件中添加以下内容:

    channelFile=path/to/your/channel/file
    
  • 方法2:Gradle 执行时添加参数:

    -PchannelFile=path/to/your/channel/file
    

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.