色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Gradle入門知識之Gradle api解析(下)

jf_78858299 ? 來源:小余的自習室 ? 作者:小余的自習室 ? 2023-03-30 11:05 ? 次閱讀

3.文件

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

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

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

1.文件創建以及獲取方式

方式1:file

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

file2使用的第二個參數是校驗文件使用:

有以下幾個校驗方式:

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

默認使用的是NONE

EXISTS(), FILE(), DIRECTORY():表示如果不滿足當前條件會報對應的異常

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

方式2:files

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

方式3:fileTree

獲取一個文件夾下面的所有的文件

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

也可以使用fileTree來對文件進行遍歷

方式4:zipTree

FileTree zipTree(Object zipPath);

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

2.文件路徑設置及獲取

getRootDir:獲取根路徑

setBuildDir:設置編譯路徑

getBuildDir:獲取編譯路徑

getProjectDir:獲取當前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方法進行遍歷

5.文件寫入和讀出

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

文件Api就講到這里,下面來看下屬性api這塊

4.屬性Api

屬性分類:

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

這里面包括系統屬性和開發者自定義的屬性,工程全局都可以訪問

其他地方使用訪問方式:

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

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

  • 3.當前Project中的屬性:

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

如:

this.project.gradle:當前Gradle
this.project.tasks:當前工程的TaskContainer
this.project.task1:獲取當前Project中的task1任務
  • 4.當前Project定義的ext屬性

    一般用于當前Project使用的ext屬性

  • 5.Extension 擴展屬性

Extension 擴展是插件為外部構建腳本提供的配置項,用于支持外部自定義插件,我們項目中給的android{}

其實就是Android Gradle Plugin給我們提供的Extension 擴展,插件內部可以獲取這個擴展屬性,然后執行對應流程

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

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

屬性訪問方式:

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

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

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

MissingPropertyException異常

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

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

一般我們訪問屬性:直接使用key訪問

如:

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

關于自定義插件這塊內容,后面會單獨出一期文章

總結:

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

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

可以結合這篇文章,自己再去看源碼和相關官網文檔,會讓自己對api的認識更加深刻。

后面會持續推出Gradle的一些高級語法,如自定義插件優秀開源框架插件的解讀以及AGP的解析

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • project
    +關注

    關注

    0

    文章

    35

    瀏覽量

    13301
  • gradle
    +關注

    關注

    0

    文章

    26

    瀏覽量

    728
收藏 人收藏

    評論

    相關推薦

    Gradle版本目錄功能的簡單應用

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

    gradle安裝與配置unity

    Gradle是一種用于構建和自動化構建過程的強大工具,而Unity則是一款跨平臺的游戲引擎。在Unity項目中使用Gradle可以幫助我們更方便地管理和構建項目,同時能夠提供更高的自定義能力和穩定性
    的頭像 發表于 12-07 14:48 ?2322次閱讀

    Android Studio與Gradle深入

    小語言規范用來處理一個特定的事情(大多情況是配置)。Android 的插件的 DSL 文檔在 Android Gradle DSL有說明。  理解了以上基礎之后,你就會知其然,知其所以然了。  以上知識
    發表于 08-31 17:58

    Gradle for Android

    Gradle for Android
    發表于 07-16 15:50

    請問OpenHarmony鴻蒙demo gradle報錯怎么解決?

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

    快速入門Gradle的方法

    我們前面的Gradle是一門基于Groov的DSL,可能很多童鞋就是因為你是這個Gradle的迷,第一覺得Gradle是一門獨立的語言呀,如果想進入歧途了,我一開始也是這么迷糊的,當你了解之后,你就可以這么理解
    的頭像 發表于 04-08 10:56 ?1358次閱讀
    快速<b class='flag-5'>入門</b><b class='flag-5'>Gradle</b>的方法

    Gradle入門知識Gradle詳解

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

    Gradle入門知識Gradle詳解(

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

    Gradle入門知識Gradle語法1

    很多開發喜歡把`Gradle`簡單定義為一種構建工具,和`ant,maven`等作用類似, 誠然Gradle確實是用來做構建,但是如果簡單得把Gradle拿來做構建,就太小看Gradle
    的頭像 發表于 03-30 10:54 ?1021次閱讀
    <b class='flag-5'>Gradle</b><b class='flag-5'>入門</b><b class='flag-5'>知識</b><b class='flag-5'>之</b><b class='flag-5'>Gradle</b>語法1

    Gradle入門知識Gradle語法2

    很多開發喜歡把`Gradle`簡單定義為一種構建工具,和`ant,maven`等作用類似, 誠然Gradle確實是用來做構建,但是如果簡單得把Gradle拿來做構建,就太小看Gradle
    的頭像 發表于 03-30 10:54 ?752次閱讀

    Gradle入門知識Gradle api解析(上)

    由于Project源碼篇幅太長:這里只列出類的部分方法和屬性: 我們前面分析過,每個build.gradle對應一個Project,Project在初始過程中會被構建為`樹`形結構:
    的頭像 發表于 03-30 11:01 ?2392次閱讀
    <b class='flag-5'>Gradle</b><b class='flag-5'>入門</b><b class='flag-5'>知識</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

    首先來講`Gradle`和`Gradle插件`有啥區別? > `Gradle`是一套構建工具,其內部構建過程主要是以`Project`組成一個樹形的生態系統,整個構建流程有自己
    的頭像 發表于 03-30 11:17 ?905次閱讀
    <b class='flag-5'>Gradle</b>自定義插件介紹2

    Gradle Plugin和AGP的區別1

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

    Gradle Plugin和AGP的區別2

    Gradle Plugin`和`AGP`的區別? `Gradle Plugin`是`Gradle`構建過程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發表于 03-30 11:49 ?1181次閱讀

    Gradle Plugin和AGP的區別3

    Gradle Plugin`和`AGP`的區別? `Gradle Plugin`是`Gradle`構建過程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發表于 03-30 11:50 ?1270次閱讀
    主站蜘蛛池模板: 最新亚洲中文字幕在线观看| 兔费看少妇性L交大片免费| 麻豆AV蜜桃AV久久| 天天综合网网欲色| 国产一区二区三区影院| 青青久久网| 97午夜伦伦电影理论片| 精品一品国产午夜福利视频| 久久99re8热在线播放| 2020国产成人免费视频| 精选国产AV精选一区二区三区| 51vv视频社区| 色老99九久精品偷偷鲁| 草莓视频免费在线观看| 欧美高清videosgratis高| 1819sextub欧美中国| 久久久免费观看| 一个人看的www视频动漫版| 国产亚洲人成在线视频| 91青青草原| 欧美激情久久久久久久大片 | 姑娘日本大全免费观看版中文翻译| 欧美日韩一区二区三区四区| 国产高清砖码区| 色偷偷777| 国产精品青草久久福利不卡 | 欧美日韩看看2015永久免费| 狠狠插影院| 综合色一色综合久久网vr| 色婷婷AV国产精品欧美毛片| 久久久精品久久久久三级| 国产av久久免费观看| 2224x最新网站| 亚洲精品成A人在线观看| 狠狠干2022| 成人高清网站| 无人区日本电影在线观看高清| 国产睡熟迷奷系列网站| 伊人久久亚洲精品一区| 芒果影院网站在线观看| 国产伦精品一区二区免费|