android不同項(xiàng)目依賴不同UI

一個(gè)aar包多個(gè)項(xiàng)目依賴,每個(gè)項(xiàng)目ui資源不一樣,代碼邏輯一樣,需要編譯不通的項(xiàng)目依賴不同的UI資源

實(shí)現(xiàn)方案

  1. 采用sourceSets方式
  2. 采用module方式

sourceSets具體使用方式

  1. 目錄結(jié)構(gòu)
    ###########目錄結(jié)構(gòu)描述
    ├── app
    │ ├── libs
    │ └── src
    │ ├── main
    │ │ ├── assets
    │ │ ├── java
    │ │ ├── res-xxx
    │ │ ├── res-yyy
    │ │ └── res
    │ └── test
  2. 如上圖目錄結(jié)構(gòu),新建文件夾如:
    res-xxx 目錄和res同級
  3. 定義pname,從外層打包時(shí)傳入,如:gradle assembleDebug -Ppname=xxx
//定義 適配不通項(xiàng)目UI需要引用的資源id,從命令中獲取項(xiàng)目名稱,獲取不到采用默認(rèn)res
def resDir = project.hasProperty('pname') ? "res-" + pname : "res"
  1. 設(shè)置編譯時(shí),所使用的res
//適配不通項(xiàng)目UI
    sourceSets {
        main {
            res.srcDirs = ['src/main/' + resDir]
        }
    }

采用module依賴方式

  1. 目錄結(jié)構(gòu)
    ###########目錄結(jié)構(gòu)描述
    ├── app
    │ ├── libs
    │ └── src
    │ ├── main
    │ │ ├── assets
    │ │ ├── java
    │ │ └── res
    │ └── test
    └── resource
    │ ├── xxxresource
    │ │ ├── libs
    │ │ └── src
    │ │ └── main
    │ └── yyyresource
    │ ├── libs
    │ └── src
    │ └── main
  2. 如上圖目錄結(jié)構(gòu),resource文件夾如:
    創(chuàng)建 library module,兩個(gè)module packagename相同如:都設(shè)置為:com.test.resource
    xxxresource
    yyyresource
  3. 定義pname,從外層打包時(shí)傳入,如:gradle assembleDebug -Ppname=xxx
//定義 適配不通項(xiàng)目UI需要引用的資源id,從命令中獲取項(xiàng)目名稱,獲取不到采用默認(rèn)res
def resDir = project.hasProperty('pname') ? "res-" + pname : "res"
  1. app項(xiàng)目中依賴
println('-----------resDir----000--->' + resDir)
api project(":resource:" + resDir + "resource")

兩種依賴方式優(yōu)缺點(diǎn)

  1. sourceSets方式
    優(yōu)點(diǎn):
    在同一個(gè)目錄里面避免創(chuàng)建過多module
    缺點(diǎn):
    res-xxx目錄中無法預(yù)覽layout.xml,無法看到效果,只能編譯后看效果
    如果有自定義view,自定義view依賴不同的aar怎么辦?繼續(xù)修改build,編譯時(shí)動態(tài)拉依賴aar?耦合度過高
  2. 采用module依賴方式
    module方式 一套UI創(chuàng)建一個(gè)resource lib
    耦合度低,自定義view,或aar放入自己的module中
    可擴(kuò)展性強(qiáng),后期需求,java類的實(shí)現(xiàn)不通,也可在此module中擴(kuò)展
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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