当前分类 / 项目构建 / 总共7篇

Gradle构建分析与Task详解

前言

我们现在已经对如何使用Gradle来构建Android工程有了认识,并且大致了解了Groovy的语法和Maven仓库的相关知识,本篇文章计划从原理和API接口角度来分析一下我们配置的脚本文件,以及是如何工作的,只有学会了如何查看API文档才能灵活的去配置构建。

我们已经知道Gradle中待编译的工程叫project,每个project由多个task来组成,而这些task就是具体完成任务的基本单位。你是否还记得第一次使用Android Studio来创建新工程,发现里面默认有很多任务,它们是怎么来的呢?它们又能做什么呢?

阅读更多

Gradle构建之Groovy语法详解

前言

前面几篇基本上对Gradle构建在Android中的使用场景和流程都有了大致了解,包括如何使用以及如何自定义插件等,这些基本都是基于官方的教程引导来了解的。接下来我们通过几篇文章来深入了解一下具体的几个核心知识点,今天就以Groovy语法为切入点,接下来几篇你可能还会看到关于标准的Gradle插件、Maven插件、自定义构建等具体的知识点相关文章。

Groovy初识

在Apache的groovy-lang.org官网可以看到一句很醒目的话:

A multi-faceted language for the Java platform / 一个Java平台的多窗口语言

从这一句话中我们可以得知它的重要性,它可以帮助我们方便的使Java平台和其他语言交互,它也是一个面向对象的语言。这门动态语言拥有类似Python、Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用。由于其运行在JVM上的特性,Groovy可以使用其他Java语言编写的库。Groovy的语法与Java非常相似,大多数Java代码也符合Groovy的语法规则,尽管可能语义不同。

阅读更多

使用Gradle自定义Android工程插件

前言

在前面几篇对Gradle的使用大致有了认识,我们在实际开发中某些情况下不仅仅需要配置构建而且需要自定义一些构建过程,这个时候就需要用到自定义Gradle插件了,自定义插件有三种方式:

  1. 在build.gradle脚本中直接使用(只在对应的gradle配置文件中使用)。
  2. 在buildSrc中使用(可在工程中随意使用)。
  3. 在独立Module中使用(可以供其他工程引用使用)。

开发Gradle插件可以在IDEA中进行开发,也可以在Android Studio中进行开发,它们唯一的不同,就是IDEA提供了Gradle开发的插件,比较方便创建文件和目录,而Android Studio中,开发者需要手动创建(但实际上,这些目录并不多,也不复杂,完全可以手动创建,而且在AS中进行创建有利于进行插件依赖的调试和功能的完善)。

Build script

在app的build.gradle最底下添加如下代码:

apply plugin: CustomePlugin

class CustomePlugin implements Plugin<Project>{

    @Override
    void apply(Project project){
        project.task('CustomePluginTask') << {
            println "这是一个通过自定义插件方式创建的任务"
        }
    }
}

阅读更多

Maven构建JavaWeb项目

参考链接:

《Maven实战》 《Maven到底是个啥玩意》

Maven帮助我们标准化了构建过程。

因为IDE的这些不完美:

  1. IDE依赖大量手工操作。编译、测试、代码生成、打包等工作都是独立的,需要手动操作,手动意味着低效和容易出错。
  2. 很难统一所有IDE的配置和操作过程。

所以项目构建工具的出现来弥补这些不足。

阅读更多

Gradle在Android中的自定义用法

参考链接:

使用共享库

在Android中除了标准的SDK还存在两种库:

一种是add-ons库(位于sdk的add-ons目录下,大部分是第三方厂商或者公司开发的) 一种是optional库(位于platforms/android-xx/optional目录下,一般是为了兼容旧版本的API)

第一类库Android Gradle会自动解析,帮我们添加到classpath中。 第二类库需要我们自己手动添加到classpath中。

android {
    useLibrary 'org.apache.http.legacy'
}

最好在AndroidManifest文件里面配置一下uses-library标签,类似于google Maps如下:

<uses-library
    android:name="com.google.android.maps"
    android:required="true"/>

阅读更多

Gradle构建Android工程

参考链接:

Android Gradle插件是Google专门为Android工程做的一个Gradle的第三方插件。它可以完成测试、部署、签名和分发打包apk.

关于Gradle构建原理和过程请看《Gradle构建过程浅析》

构建流程

AndroidGradle构建流程

如上图,典型的Android应用模块构建流程通常依循如下步骤:

  1. 编译器将您的源代码转换成 DEX(Dalvik Executable) 文件(其中包括运行在 Android 设备上的字节码),将所有其他内容转换成已编译资源。
  2. APK 打包器将 DEX 文件和已编译资源合并成单个 APK。不过,必须先签署 APK,才能将应用安装并部署到 Android 设备上。
  3. APK 打包器使用调试或发布密钥库签署您的 APK.
  4. 在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,减少其在设备上运行时的内存占用。

顶级构建文件

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

阅读更多

Gradle构建过程概览

参考链接:

HelloWorld

假设条件:

此时你已经有了JDK6.0以上版本,并配置了环境变量。 此时已经在你的电脑上安装了Android Studio并且新建了一个最简单的工程。

下载并解压:从Gradle官方网站上下载Gradle的发行包。

gradle-package
    |
    ├─bin       # Gradle可执行文件
    ├─doc       
    |   ├─userguide     # 用户指南(HTML和PDF两种版本)
    |   ├─javadoc       # API文档(包括Javadoc和Groovydoc)
    |   ├─dsl           # DSL参考指南。
    |
    ├─lib       # 库文件(jar包)
    ├─media     # 一些资源文件(比如图标)
    ├─samples   # 大量的样例,包括用户指南里的例子
    ├─src       # 源代码。这些源代码仅供参考,要编译Gradle需要去下载源码发行包。

配置环境变量:

GRADLE_HOME –> ~\gradle\gradle-4.6 PATH –> %GRADLE_HOME%\bin

测试安装结果:可以通过运行gradle命令或者gradle -v来查看是否安装成功。

新建android-gradle目录,并在其中新建文件build.gradle(Gradle自带了Groovy库,因此不需要安装Groovy)

task hello{
    doLast{
        println'Hello World!'
    }
}

在android-gradle目录执行命令gradle -q hello

$ gradle -q hello
>>> Hello World!

这里定义了一个任务(task),任务中执行了打印输出操作,接下来我们看看什么是任务。

阅读更多