chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Gradle入門(mén)知識(shí)之Gradle api解析(下)

jf_78858299 ? 來(lái)源:小余的自習(xí)室 ? 作者:小余的自習(xí)室 ? 2023-03-30 11:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

3.文件

Gradle中的文件操作和java中的文件操作是可以互相混用的。也就是說(shuō)

在Gradle中可以直接使用java中的文件操作。

下面介紹幾種Gradle中文件使用方式:

1.文件創(chuàng)建以及獲取方式

方式1:file

def file1 = file('release.xml')
def file2 = file('release.xml',PathValidation.FILE)

file2使用的第二個(gè)參數(shù)是校驗(yàn)文件使用:

有以下幾個(gè)校驗(yàn)方式:

public enum PathValidation {
    NONE(), EXISTS(), FILE(), DIRECTORY()
}

默認(rèn)使用的是NONE

EXISTS(), FILE(), DIRECTORY():表示如果不滿足當(dāng)前條件會(huì)報(bào)對(duì)應(yīng)的異常

  • EXISTS:文件是否存在
  • FILE:是否是文件
  • DIRECTORY:是否是文件夾

方式2:files

ConfigurableFileCollection files(Object... paths);
//獲取一個(gè)文件集合,返回類型ConfigurableFileCollection
def _files = files('release.xml','release2.xml')

方式3:fileTree

獲取一個(gè)文件夾下面的所有的文件

def files = fileTree(dir: 'libs',includes: ['*.jar']){
    excludes = ['a*.jar','b*.jar']
    builtBy = ['task1','task2']
}

也可以使用fileTree來(lái)對(duì)文件進(jìn)行遍歷

方式4:zipTree

FileTree zipTree(Object zipPath);

獲取zip文件下面的所有文件

2.文件路徑設(shè)置及獲取

getRootDir:獲取根路徑

setBuildDir:設(shè)置編譯路徑

getBuildDir:獲取編譯路徑

getProjectDir:獲取當(dāng)前Project的路徑

3.文件拷貝

copy {
    from file('release.xml')
    into getRootProject().getBuildDir().path+'/test/'
}

4.文件遍歷

普通文件夾遍歷

fileTree('build/outputs/apk/'){ FileTree fileTree ->
    fileTree.visit { FileTreeElement element ->
        copy {
            from element.file
            into getRootProject().getBuildDir().path+'/test/'
        }
    }
}

zip/tar壓縮文件遍歷

FileTree ziptr = zipTree('release1.zip')
FileTree ziptr = tarTree('release1.zip')

然后用FileTreevisit方法進(jìn)行遍歷

5.文件寫(xiě)入和讀出

使用java文件的InputStreamOutputStream就可以了,這個(gè)大家都很熟悉了

文件Api就講到這里,下面來(lái)看下屬性api這塊

4.屬性Api

屬性分類:

  • 1.在gradle.properties中設(shè)置的全局屬性
org.gradle.jvmargs =-Dfile.encoding=UTF-8
android.useAndroidX=true
android.enableJetifier=true
isLoadTest=true
GRADLE_USER_HOME = '../../user'

這里面包括系統(tǒng)屬性和開(kāi)發(fā)者自定義的屬性,工程全局都可以訪問(wèn)

其他地方使用訪問(wèn)方式:

  • 2.在rootProject中設(shè)置的root項(xiàng)目屬性:一般用于統(tǒng)一全局版本信息使用
ext {
    mCompileSdk = 31
    versionName = '1.0.2'
    versionCode = 2
    versionInfo = 'App的第2個(gè)版本,更新了一些基礎(chǔ)核心功能'
}

注意: 其他地方需要使用:則最好加上rootProject.ext.xxProperty

  • 3.當(dāng)前Project中的屬性:

包括自定義的屬性或者Project自帶的屬性:

如:

this.project.gradle:當(dāng)前Gradle
this.project.tasks:當(dāng)前工程的TaskContainer
this.project.task1:獲取當(dāng)前Project中的task1任務(wù)
  • 4.當(dāng)前Project定義的ext屬性

    一般用于當(dāng)前Project使用的ext屬性

  • 5.Extension 擴(kuò)展屬性

Extension 擴(kuò)展是插件為外部構(gòu)建腳本提供的配置項(xiàng),用于支持外部自定義插件,我們項(xiàng)目中給的android{}

其實(shí)就是Android Gradle Plugin給我們提供的Extension 擴(kuò)展,插件內(nèi)部可以獲取這個(gè)擴(kuò)展屬性,然后執(zhí)行對(duì)應(yīng)流程

ReleaseInfo {
    versionCode = 1
    versionName = '1.0.0'
    versionInfo = "12345566版本發(fā)布"
    fileName = "releaseinfo.xml"
}

這里的ReleaseInfo是筆者自定義插件中的一個(gè)Extension擴(kuò)展,插件中的Task可以使用這個(gè)Extension獲取到用戶提供的屬性。

屬性訪問(wèn)方式:

hasProperty('key'):是否包含該屬性

findProperty('key');找屬性,沒(méi)有找到返回null

property('key'):找屬性,沒(méi)有找到返回

MissingPropertyException異常

getProperties():獲取當(dāng)前Project的所有屬性

setProperty('key','value');設(shè)置屬性

一般我們?cè)L問(wèn)屬性:直接使用key訪問(wèn)

如:

定義:GRADLE_USER_HOME = '../../user' =>等價(jià):project.setProperty('GRADLE_USER_HOME','../../user')
訪問(wèn):GRADLE_USER_HOME  =>等價(jià)于:project.getProperty('GRADLE_USER_HOME')
定義:project.name = 'pp1' =>等價(jià):project.setProperty('name','pp1')
訪問(wèn):name =>等價(jià)于:project.getProperty('name')

關(guān)于自定義插件這塊內(nèi)容,后面會(huì)單獨(dú)出一期文章

總結(jié):

今天這篇文章主要是對(duì)Gradle中我們比較常用給的一些api進(jìn)行了講解。

主要包括Project相關(guān)apiTask相關(guān)api文件相關(guān)api屬性相關(guān)api等,其實(shí)還有一些其他的比如外部命令的api,這些很少會(huì)用到,就不再講解了.

可以結(jié)合這篇文章,自己再去看源碼和相關(guān)官網(wǎng)文檔,會(huì)讓自己對(duì)api的認(rèn)識(shí)更加深刻。

后面會(huì)持續(xù)推出Gradle的一些高級(jí)語(yǔ)法,如自定義插件,優(yōu)秀開(kāi)源框架插件的解讀以及AGP的解析;

好了,本文就講解到這里了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • project
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    13657
  • gradle
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    972
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Gradle版本目錄功能的簡(jiǎn)單應(yīng)用

    版本帝 Gradle 最新版本已經(jīng)到了 8.1.1 ,你是不是還在用著 Gradle 3 的功能?今天我們了解一 Gradle 7.0 之后推出的新功能 Version Catalo
    的頭像 發(fā)表于 09-30 11:12 ?2385次閱讀

    gradle安裝與配置unity

    Gradle是一種用于構(gòu)建和自動(dòng)化構(gòu)建過(guò)程的強(qiáng)大工具,而Unity則是一款跨平臺(tái)的游戲引擎。在Unity項(xiàng)目中使用Gradle可以幫助我們更方便地管理和構(gòu)建項(xiàng)目,同時(shí)能夠提供更高的自定義能力和穩(wěn)定性
    的頭像 發(fā)表于 12-07 14:48 ?3464次閱讀

    Android Studio與Gradle深入

    小語(yǔ)言規(guī)范用來(lái)處理一個(gè)特定的事情(大多情況是配置)。Android 的插件的 DSL 文檔在 Android Gradle DSL有說(shuō)明。  理解了以上基礎(chǔ)之后,你就會(huì)知其然,知其所以然了?! ∫陨?b class='flag-5'>知識(shí)
    發(fā)表于 08-31 17:58

    Gradle for Android

    Gradle for Android
    發(fā)表于 07-16 15:50

    請(qǐng)問(wèn)OpenHarmony鴻蒙demo gradle報(bào)錯(cuò)怎么解決?

    [build_d4wwgdfsrmyu3wivei5s3deyo$_run_closure1@1db3e190] on root project 'HarmonyAPP' of type org.gradle.api.Project.Open File
    發(fā)表于 04-01 11:27

    快速入門(mén)Gradle的方法

    我們前面的Gradle是一門(mén)基于Groov的DSL,可能很多童鞋就是因?yàn)槟闶沁@個(gè)Gradle的迷,第一覺(jué)得Gradle是一門(mén)獨(dú)立的語(yǔ)言呀,如果想進(jìn)入歧途了,我一開(kāi)始也是這么迷糊的,當(dāng)你了解之后,你就可以這么理解
    的頭像 發(fā)表于 04-08 10:56 ?1874次閱讀
    快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>Gradle</b>的方法

    Gradle入門(mén)知識(shí)Gradle詳解

    大家回想一自己第一次接觸`Gradle`是什么時(shí)候? 相信大家也都是和我一樣,在我們打開(kāi)第一個(gè)AS項(xiàng)目的時(shí)候, 發(fā)現(xiàn)有很多帶gradle字樣的文件:`setting.gradle
    的頭像 發(fā)表于 03-30 10:47 ?2923次閱讀
    <b class='flag-5'>Gradle</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>之</b><b class='flag-5'>Gradle</b>詳解

    Gradle入門(mén)知識(shí)Gradle詳解(

    大家回想一自己第一次接觸`Gradle`是什么時(shí)候? 相信大家也都是和我一樣,在我們打開(kāi)第一個(gè)AS項(xiàng)目的時(shí)候, 發(fā)現(xiàn)有很多帶gradle字樣的文件:`setting.gradle
    的頭像 發(fā)表于 03-30 10:51 ?1242次閱讀
    <b class='flag-5'>Gradle</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>之</b><b class='flag-5'>Gradle</b>詳解(<b class='flag-5'>下</b>)

    Gradle入門(mén)知識(shí)Gradle語(yǔ)法1

    很多開(kāi)發(fā)喜歡把`Gradle`簡(jiǎn)單定義為一種構(gòu)建工具,和`ant,maven`等作用類似, 誠(chéng)然Gradle確實(shí)是用來(lái)做構(gòu)建,但是如果簡(jiǎn)單得把Gradle拿來(lái)做構(gòu)建,就太小看Gradle
    的頭像 發(fā)表于 03-30 10:54 ?1429次閱讀
    <b class='flag-5'>Gradle</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>之</b><b class='flag-5'>Gradle</b>語(yǔ)法1

    Gradle入門(mén)知識(shí)Gradle語(yǔ)法2

    很多開(kāi)發(fā)喜歡把`Gradle`簡(jiǎn)單定義為一種構(gòu)建工具,和`ant,maven`等作用類似, 誠(chéng)然Gradle確實(shí)是用來(lái)做構(gòu)建,但是如果簡(jiǎn)單得把Gradle拿來(lái)做構(gòu)建,就太小看Gradle
    的頭像 發(fā)表于 03-30 10:54 ?1019次閱讀

    Gradle入門(mén)知識(shí)Gradle api解析(上)

    由于Project源碼篇幅太長(zhǎng):這里只列出類的部分方法和屬性: 我們前面分析過(guò),每個(gè)build.gradle對(duì)應(yīng)一個(gè)Project,Project在初始過(guò)程中會(huì)被構(gòu)建為`樹(shù)`形結(jié)構(gòu):
    的頭像 發(fā)表于 03-30 11:01 ?2825次閱讀
    <b class='flag-5'>Gradle</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>知識(shí)</b><b class='flag-5'>之</b><b class='flag-5'>Gradle</b> <b class='flag-5'>api</b><b class='flag-5'>解析</b>(上)

    Gradle自定義插件介紹2

    首先來(lái)講`Gradle`和`Gradle插件`有啥區(qū)別? > `Gradle`是一套構(gòu)建工具,其內(nèi)部構(gòu)建過(guò)程主要是以`Project`組成一個(gè)樹(shù)形的生態(tài)系統(tǒng),整個(gè)構(gòu)建流程有自己
    的頭像 發(fā)表于 03-30 11:17 ?1238次閱讀
    <b class='flag-5'>Gradle</b>自定義插件介紹2

    Gradle Plugin和AGP的區(qū)別1

    Gradle Plugin`和`AGP`的區(qū)別? `Gradle Plugin`是`Gradle`構(gòu)建過(guò)程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發(fā)表于 03-30 11:48 ?1602次閱讀
    <b class='flag-5'>Gradle</b> Plugin和AGP的區(qū)別1

    Gradle Plugin和AGP的區(qū)別2

    Gradle Plugin`和`AGP`的區(qū)別? `Gradle Plugin`是`Gradle`構(gòu)建過(guò)程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發(fā)表于 03-30 11:49 ?1611次閱讀

    Gradle Plugin和AGP的區(qū)別3

    Gradle Plugin`和`AGP`的區(qū)別? `Gradle Plugin`是`Gradle`構(gòu)建過(guò)程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發(fā)表于 03-30 11:50 ?1630次閱讀