Gradle 相關(guān)命令

//指定相應(yīng)版本號的gradle

gradle wrapper --gradle-version [version]

編譯命令

檢查依賴并編譯打包

./gradlew build

編譯并打出Debug包

./gradlew assembleDebug

編譯打出Debug包并安裝

./gradlew installDebug

編譯并打出Release包

./gradlew assembleRelease

編譯打出Release包并安裝

./gradlew installRelease

Debug/Release編譯并打印日志

./gradlew assembleDebug --info

./gradlew assembleRelease --info

清除構(gòu)建目錄下的產(chǎn)物

./gradlew clean

卸載Debug/Release安裝包

./gradlew uninstallDebug

./gradlew uninstallRelease

輸出:

Uninstalling com.yechaoa.gradlex (from app:debug) from device 'Pixel_5_API_31(AVD) - 12' (emulator-5554).
Uninstalled com.yechaoa.gradlex from 1 device.

adb卸載
在Android Studio中執(zhí)行是直接卸載的當前項目安裝包,如果是adb執(zhí)行則需要指定包名。

adb uninstall packagename  

任務(wù)相關(guān)

查看主要Task

./gradlew tasks

查看所有Task

./gradlew tasks --all

執(zhí)行Task

./gradlew taskName
// or
./gradlew :moduleName:taskName

查看依賴

查看項目根目錄下的依賴

./gradlew dependencies

查看app模塊下的依賴

./gradlew :app:dependencies

查看依賴輸出到文件

./gradlew app:dependencies > dependencies.txt

性能相關(guān)

離線編譯

./gradlew assembleDebug --offline

構(gòu)建緩存

./gradlew assembleDebug --build-cache // 開啟

./gradlew assembleDebug --no-build-cache // 不開啟

配置緩存

./gradlew assembleDebug --configuration-cache // 開啟

./gradlew assembleDebug --no-configuration-cache // 不開啟

并行構(gòu)建

./gradlew assembleDebug --parallel // 開啟

./gradlew assembleDebug --no-parallel // 不開啟

離線編譯、構(gòu)建緩存、配置緩存、并行構(gòu)建均需要在gradle.properties中配置

編譯并輸出性能報告

./gradlew assembleDebug --profile

性能報告位于構(gòu)建項目的GradleX/build/reports/profile/路徑下。

See the profiling report at: file:///Users/yechao/AndroidStudioProjects/GradleX/build/reports/profile/profile-2022-11-29-23-13-29.html

編譯并輸出更詳細性能報告

./gradlew assembleDebug --scan

首次執(zhí)行需要郵箱驗證,授權(quán)即可,完事之后即可打開鏈接,scan報告內(nèi)容比profile更加詳細。

動態(tài)傳參

比較常用的傳參屬性,--project-prop,我們一般常用-P表示,用來設(shè)置根項目的項目屬性

獲取參數(shù)

 ./gradlew assembleDebug -PisTest=true 

這里我們用-P傳了一個isTest字段,并賦值為true。

那在代碼里如何獲取這個參數(shù)呢?然后在build.gradle中編寫如下代碼:

if (hasProperty("isTest")){
    println("---hasProperty isTest yes")
}else {
    println("---hasProperty isTest no")
}

我們可以用hasProperty來獲取命令行(CLI)的參數(shù),module或者插件也可以這么獲?。?/p>

project.property('isTest')

然后我們用上面的命令編譯看下輸出:

?  GradleX git:(master) ? ./gradlew assembleDebug -PisTest=true 
---Gradle:開始初始化了
---Gradle:settingsEvaluated Settings對象評估完畢
---Gradle:projectsLoaded 準備加載Project對象了

> Configure project :
---Gradle:Projec beforeEvaluate Project開始評估,對象是 = GradleX
---hasProperty isTest yes //   --- 看這里 ---
---Gradle:Projec afterEvaluate Project評估完畢,對象是 = GradleX

> Configure project :app
---Gradle:buildFinished 構(gòu)建結(jié)束了

獲取參數(shù)值

我們可以用getProperty()來獲取:

if (hasProperty("isTest")) {
    println("---hasProperty isTest yes")
    if (Boolean.valueOf(getProperty('isTest'))) {
        println("---isTest true")
    } else {
        println("---isTest false")
    }
} else {
    println("---hasProperty isTest no")
}
注意,getProperty('isTest')這里要用單引號,另外命令行里面的參數(shù)值都是對象,還需要基本數(shù)據(jù)類型轉(zhuǎn)換一下,即Boolean.valueOf(getProperty('isTest'))。

自定義操作

我們就可以針對獲取的參數(shù)去做一些自定義的操作了,比如修改我們的依賴。

app>build.gradle:

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'

    if (project.hasProperty("isTest")) {
        println("---hasProperty isTest yes")
        if (Boolean.valueOf(getProperty('isTest'))) {
            println("---isTest true")

            implementation 'com.yechaoa.gradlex.devtools:devtools:1.1.1'

        } else {
            println("---isTest false")

            implementation 'com.yechaoa.gradlex.devtools:devtools:2.2.2'
        }
    } else {
        println("---hasProperty isTest no")
    }

    testImplementation 'junit:junit:4.13.2'
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容