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

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

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

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

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

jf_78858299 ? 來源:小余的自習(xí)室 ? 作者:小余的自習(xí)室 ? 2023-03-30 11:50 ? 次閱讀

方法1主要任務(wù):

  • 做一些前期的檢查工作,設(shè)置一些生命周期回調(diào)監(jiān)聽,創(chuàng)建任務(wù)等操作。
  • Gradle構(gòu)建生命周期中的Agp插件的配置流程:

1.configureProject:構(gòu)建project配置、

2.configureExtension:配置外部Extension字段

3.createTasks:創(chuàng)建Tasks

看第一階段:configureProject

private void configureProject() {
        final Gradle gradle = project.getGradle();

        //創(chuàng)建緩存版本變化的原因的字符串
        Provider
  • 這個(gè)方法主要是創(chuàng)建了一系列構(gòu)建需要的服務(wù),并將服務(wù)放到一個(gè)globalScope對(duì)象中,也算是一些前期準(zhǔn)備工作。

來看階段2:configureExtension

private void configureExtension() {
        //獲取dsl服務(wù)
        DslServices dslServices = globalScope.getDslServices();

        //獲取構(gòu)建輸出
        final NamedDomainObjectContainer

進(jìn)入createExtension方法:

這個(gè)是抽象方法:具體實(shí)現(xiàn)是在子類AppPlugin中:

protected AppExtension createExtension(
        @NonNull DslServices dslServices,
        @NonNull GlobalScope globalScope,
        @NonNull
                DslContainerProvider
  • 可以看到這里創(chuàng)建了一個(gè)‘android’的Extensions,bean類型為:BaseAppModuleExtension

這個(gè)BaseAppModuleExtension類就是我們可以在外部做擴(kuò)展的起始點(diǎn),這個(gè)類中有哪些屬性包括父類中的屬性都可以被擴(kuò)展:

進(jìn)到這個(gè)類中看看:

/** The `android` extension for base feature module (application plugin).  */
open class BaseAppModuleExtension(...private val publicExtensionImpl: ApplicationExtensionImpl)
:AppExtension:InternalApplicationExtension by publicExtensionImpl,。。

看到該類繼承了AppExtension和InternalApplicationExtension(被ApplicationExtensionImpl代理)

AppExtension又繼承AbstractAppExtension繼承TestedExtension繼承BaseExtension

這幾個(gè)類組成了AGP所有的對(duì)外擴(kuò)展屬性

這里列舉幾個(gè)平時(shí)項(xiàng)目中開發(fā)用到的字段:

  • 1.在ApplicationExtensionImpl中:

buildFeatures屬性:

public open val buildFeatures:com.android.build.api.dsl.ApplicationBuildFeatures

查看ApplicationBuildFeatures中的代碼:

內(nèi)部就兩條屬性:

//用于dataBinding支持
var dataBinding: Boolean?
var mlModelBinding: Boolean?

ApplicationBuildFeatures 繼承 BuildFeatures

進(jìn)入BuildFeatures 看看:

可以看到這里面可以配置很多信息

buildFeatures {
    aidl = true
    buildConfig = true
    viewBinding = false
    dataBinding = true
    ....
}
  • 2.在AbstractAppExtension中
val applicationVariants: DomainObjectSet

這條屬性,可以讓我們?cè)谕獠揩@取到當(dāng)前所有變種:

DomainObjectSet是一個(gè)集合,可以使用集合遍歷方式:

android.applicationVariants.all {variant->
    variant.outputs.all {output->
        outputFileName ="landi_dev_v${variant.versionName}_${variant.name}"+".apk"
    }
}

相信這個(gè)代碼大家在自己項(xiàng)目中或多或少都見過

通過前面分析我們就知道:

variant = ApplicationVariant類對(duì)象
output = BaseVariantOutput類對(duì)象

關(guān)于configureExtension就介紹到這

第3階段:createTasks

private void createTasks() {
        threadRecorder.record(
                ExecutionType.TASK_MANAGER_CREATE_TASKS,
                project.getPath(),
                null,
                () ->
                        TaskManager.createTasksBeforeEvaluate(
                                globalScope,
                                variantFactory.getVariantType(),
                                extension.getSourceSets()));

        project.afterEvaluate(
                CrashReporting.afterEvaluate(
                        p -> {
                            variantInputModel.getSourceSetManager().runBuildableArtifactsActions();

                            threadRecorder.record(
                                    ExecutionType.BASE_PLUGIN_CREATE_ANDROID_TASKS,
                                    project.getPath(),
                                    null,
                                    this::createAndroidTasks);
                        }));
    }
  • 1.BeforeEvaluate:配置前創(chuàng)建一些task
  • 2.afterEvaluate:配置后創(chuàng)建一些task:進(jìn)入createAndroidTasks看看:
final void createAndroidTasks() {
        //使用variantManager創(chuàng)建變體 關(guān)注點(diǎn)1.。。
        variantManager.createVariants();
        //創(chuàng)建TaskManager 關(guān)注點(diǎn)2.。。
        TaskManager

關(guān)注點(diǎn)1主要作用就是獲取所有的產(chǎn)品變體和buildTypes,創(chuàng)建對(duì)應(yīng)的變體列表

關(guān)注點(diǎn)2:createTaskManager

抽象方法在子類AppPlugin中實(shí)現(xiàn):

protected ApplicationTaskManager createTaskManager(
            @NonNull
                    List

創(chuàng)建的是一個(gè)ApplicationTaskManager類對(duì)象,后面會(huì)用到

來看關(guān)注點(diǎn)3:

這里面其實(shí)就是創(chuàng)建一系列的task,篇幅太長,不一一介紹

階段三:createTasks主要任務(wù):

  • 1.根據(jù)Extensions中的信息創(chuàng)建所有變體,
  • 2.給所有變體創(chuàng)建對(duì)應(yīng)的任務(wù):包括配置前任務(wù)和配置后的任務(wù)

總結(jié)我們的AGP主要任務(wù):

  • 1.創(chuàng)建了一系列構(gòu)建需要的服務(wù),并將服務(wù)放到一個(gè)globalScope對(duì)象中,作為前期準(zhǔn)備工作
  • 2.解析我們的外部擴(kuò)展android{}閉包中的信息,設(shè)置到Project中
  • 3.根據(jù)buidTypes和產(chǎn)品變種創(chuàng)建對(duì)應(yīng)的變種信息,創(chuàng)建一系列的構(gòu)建任務(wù)。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AGP
    AGP
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    18270
  • 開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    370

    瀏覽量

    40872
  • gradle
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    728
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AGP總線

    ;PinA1RA2RB1RB2R1TYFEDT#12v5VOVRCNT#2USBGO-AGP8XUSB+5V3INTI#GNDINTB#GND4GNTRST#REQCLK5ST1VCC3.3ST0VCC3.36RESERVEDMB-AGP
    發(fā)表于 05-21 11:40

    Android Studio與Gradle深入

    。  上面提到的 settings.gradle 和 build.gradleGradle 平臺(tái)中,其實(shí)都是一個(gè) Groovy 對(duì)象。  Gradle 通過插件(
    發(fā)表于 08-31 17:58

    HarmonyOS初步探索04:使用DevEco Studio時(shí)設(shè)置Gradle倉庫代替

    /huawei-gradlebuild/”} } 依賴項(xiàng){ // gradle-intellij-plugin用于構(gòu)建JetBrains插件//請(qǐng)確保始終升級(jí)到最新版本// http
    發(fā)表于 12-15 14:26

    xmake-gradle是什么?怎樣去配置呢

    'org.tboox.gradle-xmake-plugin' version '1.1.5'}被廢棄的插件集成方式buildscript {
    發(fā)表于 08-26 16:01

    AGP插槽,什么是AGP插槽,AGP插槽外形圖

    AGP插槽,什么是AGP插槽,AGP插槽外形圖 AGP(Accelerated Graphics Port)是在PCI總線基礎(chǔ)上發(fā)展起來的,主要針對(duì)圖形顯示方面進(jìn)行優(yōu)化,專門用于圖形
    發(fā)表于 04-26 18:15 ?2.4w次閱讀

    AGP插槽

    AGP插槽 AGP(Accelerated Graphics Port)是在PCI總線基礎(chǔ)上發(fā)展起來的,主要針對(duì)圖形顯示方面進(jìn)行優(yōu)化,專門用于圖形顯示卡。AGP標(biāo)準(zhǔn)也經(jīng)過了幾年的發(fā)展,從最初的
    發(fā)表于 12-24 15:22 ?1126次閱讀

    什么是AGP接口

    什么是AGP接口 AGP(Accelerate Graphical Port),加速圖形接口。隨著顯示芯片的發(fā)展,PCI總
    發(fā)表于 12-25 10:31 ?1611次閱讀

    AGP概念講解 四大AGP插槽標(biāo)準(zhǔn)介紹

    什么是AGPAGP插 槽標(biāo)準(zhǔn) AGP是Accelerated Graphics Port(圖形加速端口)的縮寫,是顯示卡的專用擴(kuò)展插槽,它是在PCI圖形接口的基礎(chǔ)上發(fā)展而來的。AGP
    發(fā)表于 06-08 07:35 ?1.1w次閱讀

    Dexcount Gradle Plugin計(jì)算APK方法數(shù)量的Gradle插件

    ./oschina_soft/dexcount-gradle-plugin.zip
    發(fā)表于 06-13 09:53 ?1次下載
    Dexcount <b class='flag-5'>Gradle</b> <b class='flag-5'>Plugin</b>計(jì)算APK方法數(shù)量的<b class='flag-5'>Gradle</b>插件

    gradle和gradlew的區(qū)別

    你會(huì)注意到輸出里打印了 Gradle 的版本,它對(duì)應(yīng)著你運(yùn)行的 gradle 命令在設(shè)備中的 Gradle 安裝包版本。這聽起來有點(diǎn)廢話,但在談?wù)?gradlew 的時(shí)候需要明確這點(diǎn),這很重要。
    的頭像 發(fā)表于 12-13 09:57 ?1655次閱讀

    Gradle入門知識(shí)之Gradle詳解

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

    Gradle入門知識(shí)之Gradle語法2

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

    Gradle PluginAGP區(qū)別1

    Gradle Plugin`和`AGP`的區(qū)別? `Gradle Plugin`是`
    的頭像 發(fā)表于 03-30 11:48 ?1235次閱讀
    <b class='flag-5'>Gradle</b> <b class='flag-5'>Plugin</b>和<b class='flag-5'>AGP</b>的<b class='flag-5'>區(qū)別</b>1

    Gradle PluginAGP區(qū)別2

    Gradle Plugin`和`AGP`的區(qū)別? `Gradle Plugin`是`
    的頭像 發(fā)表于 03-30 11:49 ?1176次閱讀

    agp和pcie插槽區(qū)別 agp插槽插的組件是什么

    AGP(加速圖形端口)和PCIe(Peripheral Component Interconnect Express)都是計(jì)算機(jī)插槽接口,用于連接顯卡和主板。下面將分別介紹AGP和PCIe插槽的區(qū)別
    的頭像 發(fā)表于 01-24 10:32 ?4066次閱讀
    主站蜘蛛池模板: 亚洲国产精品第一影院在线观看| 在线播放免费人成视频| 欧美日韩亚洲一区视频二区| 欧美videqsdesex0| 欧美日韩亚洲综合2019| 日本粉嫩学生毛绒绒| 日本老人oldmantv乱| 色WWW永久免费视频首页| 星空无限传媒视频在线观看视频| 亚洲精品久久久久AV无码林星阑| 亚洲中文在线偷拍| 90后性爱视频| 电影 qvod| 国产午夜在线观看视频播放| 久久国产精品高清一区二区三区| 麻豆天美国产一区在线播放| 青草精品国产福利在线视频| 忘忧草日本在线社区WWW电影| 亚洲精品福利在线| 中文字幕乱码在线人视频| yellow视频免费观看| 国产人妻人伦精品59HHH| 久久青青草原综合伊人| 麒麟色欧美影院在线播放| 性感尼姑风流寺| 92看看福利午夜影院| 郭德纲于谦2012最新相声| 激情床戏揉胸吃胸视频| 女仆翻身大作战| 性欧美sexovideotv| 中文字幕永久在线观看| 丰满少妇69激情啪啪无码| 韩国甜性涩爱| 欧美日韩精品| 亚洲精品视频在线免费| free18sex性自拍裸舞| 国产自拍视频在线一区| 欧美日韩第一区| 亚洲色欲色欲www474ee| 爱如潮水3免费观看日本| 黄色网址在线免费观看|