亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android?Gradle模塊依賴替換使用技巧

 更新時間:2022年06月22日 17:47:28   作者:汪海游龍  
這篇文章主要為大家介紹了Android?Gradle模塊依賴替換使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

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

解決

一開始我們通過在 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 里開啟和關(guān)閉,即可實現(xiàn) aar 模塊本地依賴調(diào)試,提交代碼也不用去手動修改回 aar 依賴。

以上就是Android Gradle模塊依賴替換使用技巧的詳細(xì)內(nèi)容,更多關(guān)于Android Gradle模塊依賴替換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • android實現(xiàn)底部導(dǎo)航欄

    android實現(xiàn)底部導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了android實現(xiàn)底部導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android自定義ScrollView實現(xiàn)放大回彈效果

    Android自定義ScrollView實現(xiàn)放大回彈效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義ScrollView實現(xiàn)放大回彈效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android Studio實現(xiàn)補(bǔ)間動畫

    Android Studio實現(xiàn)補(bǔ)間動畫

    這篇文章主要為大家詳細(xì)介紹了Android Studio實現(xiàn)補(bǔ)間動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Android 實現(xiàn)IOS選擇拍照相冊底部彈出的實例

    Android 實現(xiàn)IOS選擇拍照相冊底部彈出的實例

    這篇文章主要介紹了Android 實現(xiàn)IOS選擇拍照相冊底部彈出的實例的相關(guān)資料,這里提供了實現(xiàn)效果圖及實現(xiàn)代碼,需要的朋友可以參考下
    2017-07-07
  • Android大圖監(jiān)測系統(tǒng)的三種實現(xiàn)方式

    Android大圖監(jiān)測系統(tǒng)的三種實現(xiàn)方式

    在Android應(yīng)用中,大圖的加載和顯示可能導(dǎo)致內(nèi)存占用過高,進(jìn)而引發(fā)OOM(Out Of Memory)異常,影響應(yīng)用的穩(wěn)定性和用戶體驗,為了更好地管理大圖資源,我們需要建立起一套可靠的大圖監(jiān)測系統(tǒng),文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-01-01
  • Android自定義button點擊效果的兩種方式

    Android自定義button點擊效果的兩種方式

    這篇文章主要為大家詳細(xì)介紹了Android自定義button點擊效果的兩種方式,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android Studio開發(fā)之 JNI 篇的簡單示例

    Android Studio開發(fā)之 JNI 篇的簡單示例

    本篇文章主要介紹了Android Studio開發(fā)之 JNI 篇的簡單示例,它提供了若干的API實現(xiàn)了Java和其他語言的通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • flutter InkWell實現(xiàn)水波紋點擊效果

    flutter InkWell實現(xiàn)水波紋點擊效果

    這篇文章主要為大家詳細(xì)介紹了flutter InkWell實現(xiàn)水波紋點擊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 在Android中使用WebSocket實現(xiàn)消息通信的方法詳解

    在Android中使用WebSocket實現(xiàn)消息通信的方法詳解

    這篇文章主要介紹了在Android中使用WebSocket實現(xiàn)消息通信的方法詳解,消息推送功能可以說移動APP不可缺少的功能之一,使用WebSocket實現(xiàn)消息推送功能。感興趣的可以了解一下
    2020-07-07
  • Android AlertDialog對話框詳解及實例

    Android AlertDialog對話框詳解及實例

    這篇文章主要介紹了Android AlertDialog對話框詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12

最新評論