国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Android】從零搭建組件化項目

這篇具有很好參考價值的文章主要介紹了【Android】從零搭建組件化項目。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

組件化系列文章介紹的內(nèi)容稍微多了點,本著研究透這玩意的精神,從組件化的簡介開始說起。

簡介

什么是組件化?

將多個功能模板拆分、重組的過程。

為什么要使用組件化?

1、加快編譯速度,提高開發(fā)效率,增強(qiáng)可維護(hù)性、移植性。
2、高內(nèi)聚(軟件模塊是由相關(guān)性很強(qiáng)的代碼組成,只負(fù)責(zé)一項任務(wù),即單一責(zé)任原則)、低耦合(模塊間的依賴關(guān)系低)。
3、使每個業(yè)務(wù)模塊變得相對獨立,各個組件在組件模式下可以獨立開發(fā)調(diào)試,集成模式下又可以集成到”app殼工程”中,從而得到一個具有完整功能的APP。

組件化架構(gòu)構(gòu)成:
【Android】從零搭建組件化項目,Android,android,組件化,kotlin,java

組件化、模塊化與插件化

/ 概念 優(yōu)點
組件化 解耦復(fù)雜系統(tǒng)時,將多個功能模板拆分、重組的過程。 1、提高組件復(fù)用性。
2、提高工程編譯速度。
3、降低組件間的耦合。
4、能夠獨立運行在設(shè)備上。
5、利于多人團(tuán)隊協(xié)作開發(fā)。
模塊化 將代碼庫組織為多個松散耦合的獨立部分的做法。 1、提高代碼復(fù)用性。
2、降低組件間的耦合。
3、利于多人團(tuán)隊協(xié)作開發(fā)。
插件化 插件化源于免安裝運行apk的想法,免安裝的apk可以理解為插件,支持插件的app成為宿主。 1、動態(tài)更新插件。
2、解決方法數(shù)超過65535的問題。
3、宿主和插件分開編譯,提升開發(fā)效率。
4、減少安裝Apk的體積、按需下載模塊。

組件化和插件化的區(qū)別

  • 組件化:組件化開發(fā)就是將一個app分成多個模塊,每一個模塊都是一個組件,開發(fā)過程中讓這些組件相互依賴或者單獨調(diào)試。最終發(fā)布將這些組件合并統(tǒng)一成一個apk。
  • 插件化:插件化開發(fā)是將整個app拆分成多個模塊,這些模塊包含一個宿主和多個插件,每個模塊都是一個apk,最終打包的時候宿主apk和插件apk分開打包。

開始

啟動Android Studio創(chuàng)建一個Android項目,在項目里new Module,彈出的Create New Module中選擇Android LibaryPhone & Tablet,配置完成Module name等參數(shù)后點擊finish完成創(chuàng)建。

【Android】從零搭建組件化項目,Android,android,組件化,kotlin,java
在上圖中,創(chuàng)建了commonorder組件,common組件推薦作為一個基礎(chǔ)庫,第三方的一些都在該庫進(jìn)行依賴,其它組件庫使用第三方庫直接引用common組件即可,一定程度上避免了組件庫重復(fù)引用的問題。

創(chuàng)建好的Module文件目錄下都有一個屬于自己的build.gradle文件,Gradle文件執(zhí)行順序:settings.gradle > Project build.gradle > Module build.gradle

Module build.gradle中可以通過plugins修改當(dāng)前Modelapplicationlibrary,如下:

plugins {
    id 'com.android.application'  // application,可以作為app獨立運行
    id 'com.android.library'      // library,可作為aar包引入application包使用
}

com.android.applicationcom.android.library無法共存,同一個Model只能存在一個。不同的Model可以相互使用implementation引入到Model中,使得Model里的方法可以相互調(diào)用。

創(chuàng)建配置共享文件

在Android項目中,每個Module都有自己的.gradle文件,Gradle是一個使用Groovy語言(核心代碼是 Java )編寫的構(gòu)建工具,具體使用教程可參考:來自Gradle開發(fā)團(tuán)隊的Gradle入門教程

使用組件化的項目一般會有多個 Module ,為了使不同 Module 的版本庫配置使用相同的參數(shù),需要在項目根目錄創(chuàng)建一個app_config.gradle,用以共享組件間相同的配置,避免過度碎片化。

app_config.gradle:

ext {
    app_android = [
            compileSdk : 32,
            minSdk     : 21,
            targetSdk  : 32,
            versionCode: 1,
            versionName: "1.0"
    ]
}

app_config.gradle 要想使其它 Module 都可以引用,需要在 Projectbuild.gradle 中對其進(jìn)行全局引用。

apply from: 'app_config.gradle'

這樣一來,所有 Modulebuild.gradle 就可以使用 app_config.gradle 的共享參數(shù)了

android {
    compileSdk app_android.compileSdk

    defaultConfig {
        minSdk app_android.minSdk
        targetSdk app_android.targetSdk
        versionCode app_android.versionCode
        versionName app_android.versionName
    }
}

打包模式配置

組件化的優(yōu)點中有一個加快編譯速度、提升開發(fā)效率的功能。
上面說到:在 Modulebuild.gradle 可以通過修改 applicationlibrary 控制當(dāng)前組件為打包或集成模式。為了方便后續(xù)修改打包模式,app_config.gradle 增加了一個 isRelease 的打包配置參數(shù)。

ext {
    // 控制打包的模式
    isRelease = true
}

通過控制 isRelease 的布爾值,即可實現(xiàn)自動配置對應(yīng)的 build.gradle 值,當(dāng)然,前提是自動配置的代碼提前寫好。

// 公用的插件
plugins {
    id 'org.jetbrains.kotlin.android'
}
// 根據(jù)打包模式使用的插件
if (isRelease){
    apply plugin : 'com.android.library'
} else {
    apply plugin : 'com.android.application'
}

當(dāng)模塊處于打包模式時,為避免安裝一次出現(xiàn)兩個應(yīng)用圖標(biāo)的問題,整個App工程的所有 AndroidManifest.xml 只能出現(xiàn)一個帶android.intent.action.MAINintent-filter。

針對這種情況需要額外對不同打包模式下的 AndroidManifest.xml 文件做處理。

為此,我們可以在除主工程以外,需要在 debug 期間作為 application 工程獨立運行項目的 build.gradle 文件添加以下配置。

android {
	// 源集 —— 用來設(shè)置Java目錄或者資源目錄
	sourceSets {
	    main {
	        if (!isRelease) {
	            // 如果是組件化模式,需要單獨運行時使用該文件
	            manifest.srcFile 'src/main/debug/AndroidManifest.xml'
	        } else {
	            // 集成化模式,整個項目打包時使用該文件
	            manifest.srcFile 'src/main/AndroidManifest.xml'
	            java {
	                // release 時 debug 目錄下的Java文件不需要合并到主工程
	                exclude '**/debug/**'
	            }
	        }
	    }
	}
}

接著在main文件夾添加debug文件,將用到的 AndroidManifest.xml 文件放入里面,并將 src/main/AndroidManifest.xml 文件的配置設(shè)置為集成模式,可參考如下代碼:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application>
        <activity
            android:name=".MainActivity"
            android:exported="true" >
        </activity>
    </application>
</manifest>

APT與JavaPoet

組件化的進(jìn)一步使用需要用到APT,APT全稱為Annotation Processing Tool,即注解處理器。有很多的框架都是基于APT實現(xiàn),例如:ButterKnife、Dagger、EvenBusARouter等。

關(guān)于 APTJavaPoet 的相關(guān)知識已整理好相關(guān)文章 ?? 【Android】APT與JavaPoet學(xué)習(xí)與實戰(zhàn)

前往本文項目?? 【Android】從零搭建組件化項目

參考文檔
1、Android 組件化實戰(zhàn)(視頻)文章來源地址http://www.zghlxwxcb.cn/news/detail-554719.html

到了這里,關(guān)于【Android】從零搭建組件化項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Android GreenDao 使用全面講解,Android組件化入門

    Android GreenDao 使用全面講解,Android組件化入門

    5. 在多個線程中使用QueryBuilder 如果在多個線程中使用查詢,則必須調(diào)用 forCurrentThread ()以獲取當(dāng)前線程的Query實例。Query的對象實例綁定到構(gòu)建查詢的擁有線程。 這使您可以安全地在Query對象上設(shè)置參數(shù),而其他線程不會干擾。如果其他線程嘗試在查詢上設(shè)置參數(shù)或執(zhí)行綁

    2024年04月27日
    瀏覽(11)
  • Android AGP8.1.0組件化初探

    Android AGP8.1.0組件化初探

    前面兩篇完成了從AGP4.2到 AGP8.1.0的升級,本文是由于有哥們留言說在AGP8.0中使用ARouter組件化有問題,于是趁休息時間嘗試了一下,寫了幾個demo,發(fā)現(xiàn)都沒有問題,跳轉(zhuǎn)和傳值都是正常的,這里我也是直接從groovy轉(zhuǎn)換成version-catalogs的依賴方式,由于之前升級過,所以這次很順

    2024年02月10日
    瀏覽(22)
  • Android徹底組件化—UI跳轉(zhuǎn)升級改造

    Android徹底組件化—UI跳轉(zhuǎn)升級改造

    (2)host對應(yīng)的是share。在組件化框架中,每個組件對應(yīng)一個唯一的host,例如分享組件的host就是share,讀書組件的host是reader等等。 host是路由分發(fā)的第一級,根據(jù)host可以定位到每個組件。 host還可以對所有的路由URL進(jìn)行一個分組,只有調(diào)用到該分組的路由的時候,組內(nèi)的路由

    2024年04月16日
    瀏覽(21)
  • Android學(xué)習(xí)之路(22) 從模塊化到組件化

    Android學(xué)習(xí)之路(22) 從模塊化到組件化

    Android 應(yīng)用項目 , 都存在一個應(yīng)用模塊 ( Application Module ) , 在 build.gradle 構(gòu)建腳本中 , 第一個插件配置 com.android.application , 表明 該 Module 編譯打包后的輸出是 APK 安裝包 ; 該項目可以直接運行 ; 如果在 build.gradle 配置的是 com.android.library 插件 , 那么 編譯 Module 打包后輸出的是 a

    2024年01月22日
    瀏覽(23)
  • Android學(xué)習(xí)之路(23)組件化框架ARouter的使用

    Android學(xué)習(xí)之路(23)組件化框架ARouter的使用

    支持直接解析標(biāo)準(zhǔn)URL進(jìn)行跳轉(zhuǎn),并自動注入?yún)?shù)到目標(biāo)頁面中 支持多模塊工程使用 支持添加多個攔截器,自定義攔截順序 支持依賴注入,可單獨作為依賴注入框架使用 支持InstantRun 支持MultiDex (Google方案) 映射關(guān)系按組分類、多級管理,按需初始化 支持用戶指定全局降級與局

    2024年01月22日
    瀏覽(25)
  • 現(xiàn)代化 Android 開發(fā):組件化與模塊化的抉擇

    作者:古哥E下 項目初始的時候,一般都是使用一個分層架構(gòu),接入各種框架,然后就寫業(yè)務(wù)代碼。但如果項目慢慢變大,那就會出現(xiàn)很多項目管理的問題,諸如: 1.代碼復(fù)用與抽象問題 2.編譯速度問題 3.版本迭代速度問題 所以組件化、模塊化、動態(tài)化、插件化、跨平臺等各

    2024年02月11日
    瀏覽(26)
  • Android組件化方案及組件消息總線modular-event實戰(zhàn),渣本Android開發(fā)小伙如何一步步成為架構(gòu)師

    Android組件化方案及組件消息總線modular-event實戰(zhàn),渣本Android開發(fā)小伙如何一步步成為架構(gòu)師

    美團(tuán)外賣團(tuán)隊開發(fā)的一款A(yù)ndroid路由框架,基于組件化的設(shè)計思路。主要提供路由、ServiceLoader兩大功能。之前美團(tuán)技術(shù)博客也發(fā)表過一篇WMRouter的介紹:《WMRouter:美團(tuán)外賣Android開源路由框架》。WMRouter提供了實現(xiàn)組件化的兩大基礎(chǔ)設(shè)施框架:路由和組件間接口調(diào)用。支持和文

    2024年04月22日
    瀏覽(16)
  • Android技術(shù)棧(二)組件化改造,目前最穩(wěn)定和高效的UI適配方案

    Android技術(shù)棧(二)組件化改造,目前最穩(wěn)定和高效的UI適配方案

    .build(PR.navi.navi) .navigation(); 而 Activity 則不需要,它會立即顯示 ARouter.getInstance() .build(PR.navi.navi) //還可以設(shè)置參數(shù),ARouter會幫你存在Bundle中 .withString(“pathId”,UUID.randomUUID().toString()) //Activity 或 Context .navigation(this); navi 模塊是典型的業(yè)務(wù)邏輯模塊,這里你可導(dǎo)入一些只有這個模塊才

    2024年03月24日
    瀏覽(21)
  • 一篇讀懂 Android 開發(fā)中模塊化、組件化、插件化和熱修復(fù)

    一篇讀懂 Android 開發(fā)中模塊化、組件化、插件化和熱修復(fù)

    網(wǎng)上關(guān)于 “Android 開發(fā)\\\" 的文章很多,我本人學(xué)習(xí) Android 開發(fā)的過程也借鑒了網(wǎng)上先輩們的文章;但大多數(shù)文章都從底層的細(xì)枝末節(jié)開始講述,由下而上給人一種這門技術(shù)“博大精深”望而生畏的感覺;而我寫這篇文章的初衷就是由上而下,希望別人在閱讀的過程中能夠覺得

    2023年04月08日
    瀏覽(23)
  • iOS 搭建組件化私有庫

    iOS 搭建組件化私有庫

    步驟1是在沒有索引庫的情況下或者是新增索引的時候才需要用到(創(chuàng)建基礎(chǔ)組件庫) 首先在碼云上建立一個私有庫索引,起名為 SYComponentSpec 添加私有庫索引 當(dāng)你需要新建組件的時候,就在這里開始,如果是想修改原有的庫,就可以直接在之前的組件倉庫里面修改即可 1.在

    2024年02月11日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包