最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

Gradle命令詳解

前面一節(jié)課中,我們介紹了 Gradle 的任務(wù)聲明,任務(wù)依賴(lài),Gradle 構(gòu)建的順序等。其實(shí)在文章中我們也提到了一些 Gradle 命令。本文我們將為大家介紹一下 Gradle 的命令,包括會(huì)將前面的命令使用做一個(gè)匯總。

1. 使用 Gradle 命令

使用 Gradle 命令就是我們?cè)诿羁刂婆_(tái)輸入 Gradle 命令,使用 Gradle 命令我們可以配置 Gradle 環(huán)境,也可以不用配置 Gradle 環(huán)境,下面我們看下具體的使用方法:

1.1 已經(jīng)安裝了Gradle環(huán)境

如果安裝了 Gradle 環(huán)境變量的話(huà),我們直接使用gradle [命令],檢查有沒(méi)有安裝 Gradle 環(huán)境我們可以使用下面命令:

$ gradle -version

------------------------------------------------------------
Gradle 6.0.1
------------------------------------------------------------

Build time:   2019-11-18 20:25:01 UTC
Revision:     fad121066a68c4701acd362daf4287a7c309a0f5

Kotlin:       1.3.50
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          1.8.0_91 (Oracle Corporation 25.91-b14)
OS:           Mac OS X 10.14.5 x86_64

如果如上所示,輸出 Gradle 版本則說(shuō)明已經(jīng)安裝了 Gradle 環(huán)境,如果如下所示,則說(shuō)明沒(méi)有安裝 Gradle 環(huán)境,關(guān)于 Gradle 環(huán)境變量的安裝配置請(qǐng)看《構(gòu)建自己的Gradle工程》

$ gradle -version
-bash: gradle: command not found

1.2 沒(méi)有安裝 Gradle 環(huán)境

我們前面提到過(guò)如果沒(méi)有安裝配置 Gradle 環(huán)境變量,我們可以使用gradlew命令。我們前面知道我們創(chuàng)建 Android 項(xiàng)目時(shí)默認(rèn)會(huì)有兩個(gè)腳本gradlew.bat[Windows平臺(tái)]和gradlew[Linux和Unix平臺(tái)]。這兩個(gè)腳本里面預(yù)置了我們常用的一些命令。我們以clean命令為例:

//Windows系統(tǒng)
gradlew clean


//Linux系統(tǒng)或是Mac系統(tǒng)
./gradlew clean

2. Gradle 常用命令

2.1 使用 Gradle Wrapper

我們前面講《Gradle Wrapper詳解》的時(shí)候提到過(guò)我們?nèi)绻褂?Gradle Wrapper 的話(huà)可以使用命令

$ gradlew wrapper --gradle-version 6.0.1

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1s
1 actionable task: 1 up-to-date

2.2 查看項(xiàng)目的任務(wù)依賴(lài)

要查看項(xiàng)目的依賴(lài)關(guān)系圖,我們可以運(yùn)行以下命令:

$ gradle dependencies
......省略部分輸出.......
kaptTestRelease
\--- org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.2.51
     +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.51
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.2.51
     |    \--- org.jetbrains:annotations:13.0
     \--- org.jetbrains.kotlin:kotlin-compiler-embeddable:1.2.51
          +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.51 (*)
          \--- org.jetbrains.kotlin:kotlin-script-runtime:1.2.51

lintChecks - Configuration to apply external lint check jar
No dependencies
......省略部分輸出.......

運(yùn)行該命令后我們可以在控制臺(tái)看到項(xiàng)目的整體依賴(lài)關(guān)系和各個(gè)模塊的依賴(lài)關(guān)系圖,如上面的部分輸出所示。

Tips:上面我們運(yùn)行的命令輸出的是整個(gè)項(xiàng)目的依賴(lài),有時(shí)候我們只需要查查看當(dāng)前 module 的依賴(lài),那么我們?cè)趺床椴榭茨??如下,我們輸?code>gradle [module_name]:dependencies,例如我們想要查看 app 模塊的依賴(lài),我們可以執(zhí)行如下命令:

//查看APP模塊的依賴(lài)
$ gradle app:dependencies

2.3 排除某些任務(wù)

前面我么講了 Gradle 的任務(wù),我們可以用-x選項(xiàng)去排除一個(gè)任務(wù)。我們?cè)?code>build.gradle中定義的task mTest,我們?nèi)绻胍^(guò)mTest,可以用以下的命令:

//buid.gradle中定義的Task,mTest
task mTest{
    doLast{
        println "這是測(cè)試Task"
    }
}

//在控制臺(tái)執(zhí)行命令排除
$ gradle clean build -x mTest

2.4 分析項(xiàng)目構(gòu)建

在 Gradle 中內(nèi)置了對(duì)項(xiàng)目分析的支持,我們平時(shí)如果遇到構(gòu)建的性能問(wèn)題,比如我們構(gòu)建時(shí)間長(zhǎng),想要查看每個(gè)任務(wù)構(gòu)建時(shí)間,我們可以使用這個(gè)命令[--profile build]來(lái)生成項(xiàng)目的配置文件報(bào)告,報(bào)告會(huì)以文件形式生成在 build/reports/ 目錄下,如下所示:

$ gradle --profile build

> Task :app:lint
Ran lint on variant release: 15 issues found
Ran lint on variant debug: 15 issues found
Wrote HTML report to file:///Users/leiqi/branch/MyApplication/app/build/reports/lint-results.html
Wrote XML report to file:///Users/leiqi/branch/MyApplication/app/build/reports/lint-results.xml

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 9s
51 actionable tasks: 1 executed, 50 up-to-date

See the profiling report at: file:///Users/leiqi/TZYJ/branch/MyApplication/build/reports/profile/profile-2020-02-14-15-14-17.html
A fine-grained performance profile is available: use the --scan option.

我們看到控制臺(tái)它會(huì)輸出已生成 HTML 格式和 XML 格式的文檔。我們可以看下 reports 文件夾

圖片描述
我們?cè)跒g覽器中,大家打開(kāi)該文件就可以看到具體的任務(wù)耗時(shí)了,如下圖:

圖片描述

2.5 查看 Gradle 的 Task

我們?cè)陂_(kāi)發(fā)過(guò)程中有時(shí)候難免會(huì)要查看 Gradle 構(gòu)建有哪些任務(wù),那么我們就可以使用下面的命令來(lái)查看:

$ gradle task

> Task :tasks

------------------------------------------------------------
Tasks runnable from root project
------------------------------------------------------------

Android tasks
-------------
androidDependencies - Displays the Android dependencies of the project.
signingReport - Displays the signing info for the base and test modules
sourceSets - Prints out all the source sets defined in this project.

Build tasks
-----------
assemble - Assemble main outputs for all the variants.
assembleAndroidTest - Assembles all the Test applications.
build - Assembles and tests this project.
.........省略部分任務(wù)..............

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Cleanup tasks
-------------
lintFix - Runs lint on all variants and applies any safe suggestions to the source code.
.........省略部分任務(wù)..............

我們可以看到這個(gè)命令執(zhí)行后會(huì)輸出輸出各種任務(wù)。

Tips: 我們看到這個(gè)很多,其實(shí)該命令輸出的不是所有的命令,要查看項(xiàng)目構(gòu)建的所有命令,我們需要執(zhí)行的時(shí)候 后面加上 --all如下:

$ gradle task -all

2.6 使用 Gradle 命令來(lái)打 Android 包

我們?cè)陂_(kāi)發(fā)中經(jīng)常是點(diǎn)擊 run 按鈕來(lái)執(zhí)行編譯并打包的,這樣打出來(lái)的包是 Debug 包,供我們開(kāi)發(fā)者來(lái)開(kāi)發(fā)調(diào)試的,但是我們上線(xiàn)或是提交測(cè)試的時(shí)候我們需要提交的是 Release 包。下面我們就來(lái)看下我們?nèi)绾问褂?Gradle 命令來(lái)打包。

// 編譯并打Debug包
$ gradle assembleDebug
// 編譯app module 并打Debug包
$ gradlew install app:assembleDebug
// 編譯并打Release的包
# gradle assembleRelease
// 編譯并打Release包并安裝
$ gradle installRelease
// 卸載Release包
$ gradle uninstallRelease

以上是我總結(jié)的我們平時(shí)開(kāi)發(fā)中打包最常用的幾個(gè)命令。

2.7 exlude 排除依賴(lài)包中的部分類(lèi)

我們開(kāi)發(fā)中,可能大家或多或少都會(huì)遇到 jar 包沖突的問(wèn)題,有時(shí)候兩個(gè) jar 包不同,但是里面有兩個(gè)類(lèi)的包名路徑是一摸一樣的。這樣我們就需要排除掉某個(gè)包中的重復(fù)的類(lèi),這時(shí)候就需要用的 exclude 命令,如下我們就以排除這個(gè)hibernate包中的類(lèi)為例子。

compile('org.hibernate:hibernate:3.1') {
    //以artifact name來(lái)排除出
    exclude module: 'cglib'
    //通過(guò)group name來(lái)排除
    exclude group: 'org.jmock'
}

3. 小結(jié)

這一篇文章我們主要是學(xué)習(xí)了,我們?nèi)粘i_(kāi)發(fā)中會(huì)用到的 Gradle 的一些命令??赡苡型瑢W(xué)會(huì)問(wèn),我們?yōu)槭裁匆私?Gradle 命令?我們平時(shí)直接使用工具編譯不就好了。當(dāng)然我們可以通過(guò) AS 等編譯工具來(lái)編譯,其實(shí) AS 的編譯按鈕也是在執(zhí)行 Gradle 命令,有時(shí)候?yàn)榱烁玫奶岣呶覀兊拈_(kāi)發(fā)效率為我們節(jié)省時(shí)間。我們就需要用到 Gradle 的命令去排查問(wèn)題。還有一個(gè)就是我們了解 Gradle 命令有助于我們后面 Gradle 運(yùn)用在組件化,插件化,編譯自己的 Gradle 插件等方面。