Android Gradle模块依赖替换使用技巧

 更新时间:2022年06月22日 17:47:28   作者:汪海游龙  
这篇文章主要为大家介绍了Android Gradle模块依赖替换使用技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景

我们在多模块项目开发过程中,会遇到这样的场景,工程里依赖了一个自己的或者其他同事的 aar 模块,有时候为了开发调试方便,经常会把 aar 改为本地源码依赖,开发完毕并提交的时候,会再修改回 aar 依赖,这样就会很不方便,开发流程图示如下:

解决

一开始我们通过在 appbuild.gradle 里的 dependency 判断如果是需要本地依赖的 aar,就替换为 implementation project 依赖,伪代码如下:

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

这样就可以不用每次提交代码还要修改回 aar 依赖,但是如果其他模块如果也依赖了该 aar 模块,就会出现问题,虽然可以继续修改其他模块里的依赖方式,但是这样就会有侵入性,而且不能彻底解决问题,仍然有可能出现本地依赖和 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

到这里就大功告成了,后续只需要在 local.properties 里开启和关闭,即可实现 aar 模块本地依赖调试,提交代码也不用去手动修改回 aar 依赖。

以上就是Android Gradle模块依赖替换使用技巧的详细内容,更多关于Android Gradle模块依赖替换的资料请关注脚本之家其它相关文章!

相关文章

  • Android kotlin RecyclerView遍历json实现列表数据的案例

    Android kotlin RecyclerView遍历json实现列表数据的案例

    这篇文章主要介绍了Android kotlin RecyclerView遍历json实现列表数据的案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-08-08
  • Kotlin协程Context应用使用示例详解

    Kotlin协程Context应用使用示例详解

    这篇文章主要为大家介绍了Kotlin协程Context应用使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android屏幕锁屏弹窗的正确姿势DEMO详解

    Android屏幕锁屏弹窗的正确姿势DEMO详解

    本文给大家分享android屏幕锁屏弹窗的正确姿势DEMO详解,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • Android Activity 不能被截屏的解决方法

    Android Activity 不能被截屏的解决方法

    下面小编就为大家分享一篇Android Activity 不能被截屏的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Flutter绘制之路径联合详解

    Flutter绘制之路径联合详解

    在Flutter绘制中,path路径可谓是绘制中的核心,通过path路径可以绘制出任意的二维图形,所以本文就来和大家聊聊Flutter中路径联合的相关知识,感兴趣的可以了解一下
    2023-06-06
  • Android 将文件下载到指定目录的实现代码

    Android 将文件下载到指定目录的实现代码

    本文通过实例代码给大家介绍了android将文件下载到指定目录的实现方法,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-06-06
  • Flutter Flar动画使用实战示例

    Flutter Flar动画使用实战示例

    这篇文章主要为大家介绍了Flutter Flar动画使用实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Android scrollview如何监听滑动状态

    Android scrollview如何监听滑动状态

    这篇文章主要介绍了Android scrollview监听滑动状态的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Android仿微信布局的实现示例

    Android仿微信布局的实现示例

    本文主要介绍了Android仿微信布局的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Android studio实现单选按钮

    Android studio实现单选按钮

    这篇文章主要为大家详细介绍了Android studio实现单选按钮,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论