溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Androd?Gradle模塊依賴替換如何使用

發(fā)布時間:2022-06-23 09:35:46 來源:億速云 閱讀:129 作者:iii 欄目:開發(fā)技術

本篇內容介紹了“Androd Gradle模塊依賴替換如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

背景

我們在多模塊項目開發(fā)過程中,會遇到這樣的場景,工程里依賴了一個自己的或者其他同事的 aar 模塊,有時候為了開發(fā)調試方便,經常會把 aar 改為本地源碼依賴,開發(fā)完畢并提交的時候,會再修改回 aar 依賴,這樣就會很不方便,開發(fā)流程圖示如下:

Androd?Gradle模塊依賴替換如何使用

解決

一開始我們通過在 appbuild.gradle 里的 dependency 判斷如果是需要本地依賴的 aar,就替換為 implementation project 依賴,偽代碼如下:

dependencies {
    if(enableLocalModule) {
        implementation 'custom:test:0.0.1'
    } else {
        implementation project(path: ':test')
    }
}

這樣就可以不用每次提交代碼還要修改回 aar 依賴,但是如果其他模塊如果也依賴了該 aar 模塊,就會出現(xiàn)問題,雖然可以繼續(xù)修改其他模塊里的依賴方式,但是這樣就會有侵入性,而且不能徹底解決問題,仍然有可能出現(xiàn)本地依賴和 aar 依賴的代碼不一致問題。

Gradle 官方針對這種場景提供了更好的解決方式 DependencySubstitution,使用方式如下:

步驟1:

settting.gradle,添加如下代碼:

// 加載本地 module
if (file("local.properties").exists()) {
    def properties = new Properties()
    def inputStream = file("local.properties").newDataInputStream()
    properties.load( inputStream )
    def moduleName = properties.getProperty("moduleName")
    def modulePath = properties.getProperty("modulePath")
    if (moduleName != null && modulePath != null) {
        include moduleName
        project(moduleName).projectDir = file(modulePath)
    }
}

步驟2:

appbuild.gradle 添加以下代碼

configurations.all {
    resolutionStrategy.dependencySubstitution.all { DependencySubstitution dependency ->
        // use local module
        if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.group == "custom") {
            def targetProject = findProject(":test")
            if (targetProject != null) {
                dependency.useTarget targetProject
            }
        }
    }
}

步驟3:

local.properties

moduleName=:test
modulePath=../AndroidStudioProjects/TestProject/testModule

到這里就大功告成了,后續(xù)只需要在 local.properties 里開啟和關閉,即可實現(xiàn) aar 模塊本地依賴調試,提交代碼也不用去手動修改回 aar 依賴。

“Androd Gradle模塊依賴替換如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI