Git Product home page Git Product logo

Comments (2)

creeperyang avatar creeperyang commented on August 23, 2024 3

二、Android 编程

1. IDE 和创建第一个项目

下载 AndroidStudio,创建一个项目并编译,了解基本的流程。

2. Layout 与 Res 文件夹

3. Gradle

Gradle 是一个基于 JVM 的构建工具,基于 groovy,有强大的依赖管理,支持多工程构建。

Gradle 构建基础

projects 和 tasks是 Gradle 中最重要的两个概念。

  • 任何一个 Gradle 构建都是由一个或多个 projects 组成。每个project一般是一个jar包或者一个web应用等等。
  • 每个 project 都由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作。如编译,打包,生成 javadoc,发布到某个仓库等操作。

1、创建任务

1.1、创建一个最简单的task(build.gradle文件):

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

我们可以执行gradle -q hello查看输出:

$ gradle -q hello
Hello world!

1.2、快速定义task:

task hello << {
    println 'Hello world!'
}
// << 等同于 doLast

1.3、使用groovy

task upper << {
    String someString = 'mY_nAmE'
    println "Original: " + someString
    println "Upper case: " + someString.toUpperCase()
}
$ gradle -q upper
Original: mY_nAmE
Upper case: MY_NAME

2、任务依赖

2.1、 在两个任务之间指明依赖关系

task hello << {
    println 'Hello world!'
}
task intro(dependsOn: hello) << {
    println "I'm Gradle"
}
$ gradle -q intro
Hello world!
I'm Gradle

2.2、延迟依赖

taskX 是可以在 taskY 之前定义的。

task taskX(dependsOn: 'taskY') << {
    println 'taskX'
}
task taskY << {
    println 'taskY'
}

3、动态任务

4.times { counter ->
    task "task$counter" << {
        println "I'm task number $counter"
    }
}
// gradle -q task1

4、任务操纵

4.1、通过 API 进行任务之间的通信 - 增加依赖

4.times { counter ->
    task "task$counter" << {
        println "I'm task number $counter"
    }
}
task0.dependsOn task2, task3

4.2、通过 API 进行任务之间的通信 - 增加任务行为

task hello << {
    println 'Hello Earth'
}
hello.doFirst {
    println 'Hello Venus'
}
hello.doLast {
    println 'Hello Mars'
}
hello << {
    println 'Hello Jupiter'
}

doFirst 和 doLast 可以进行多次调用。他们分别被添加在任务的开头和结尾。当任务开始执行时这些动作会按照既定顺序进行。

5、短标记法

每个任务都是一个脚本的属性,你可以访问它。

以属性的方式访问任务:

task hello << {
    println 'Hello world!'
}
hello.doLast {
    println "Greetings from the $hello.name task."
}
// $hello.name 就是 “hello”

6、增加自定义属性

task myTask {
    ext.myProperty = "myValue"
}

task printTaskProperties << {
    println myTask.myProperty
}

7、调用 Ant 任务

Ant 任务是 Gradle 中的一等公民。Gradle 自带了一个 AntBuilder,可以通过它来调用一个 Ant 任务以及与 Ant 中的属性进行通信。

task loadfile << {
    def files = file('../antLoadfileResources').listFiles().sort()
    files.each { File file ->
        if (file.isFile()) {
            ant.loadfile(srcFile: file, property: file.name)
            println " *** $file.name ***"
            println "${ant.properties[file.name]}"
        }
    }
}

8、方法抽取

task checksum << {
    fileList('../antLoadfileResources').each {File file ->
        ant.checksum(file: file, property: "cs_$file.name")
        println "$file.name Checksum: ${ant.properties["cs_$file.name"]}"
    }
}
task loadfile << {
    fileList('../antLoadfileResources').each {File file ->
        ant.loadfile(srcFile: file, property: file.name)
        println "I'm fond of $file.name"
    }
}
File[] fileList(String dir) {
    file(dir).listFiles({file -> file.isFile() } as FileFilter).sort()
}

9、定义默认任务

defaultTasks 'clean', 'run'
task clean << {
    println 'Default Cleaning!'
}
task run << {
    println 'Default Running!'
}
task other << {
    println "I'm not a default task!"
}
$ gradle -q
Default Cleaning!
Default Running!

以上是一些gradle的基础小知识,下面以android项目为例,了解gradle实际是怎么工作的。

Building Android Apps

from blog.

Go7hic avatar Go7hic commented on August 23, 2024

厉害了老哥

from blog.

Related Issues (20)

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.