返回顶部
首页 > 资讯 > 移动开发 >Android Gradle模块依赖替换使用技巧
  • 106
分享到

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

2024-04-02 19:04:59 106人浏览 薄情痞子
摘要

目录背景解决步骤1:步骤2:步骤3:背景 我们在多模块项目开发过程中,会遇到这样的场景,工程里依赖了一个自己的或者其他同事的 aar 模块,有时候为了开发调试方便,经常会把 aar

背景

我们在多模块项目开发过程中,会遇到这样的场景,工程里依赖了一个自己的或者其他同事的 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模块依赖替换的资料请关注编程网其它相关文章!

--结束END--

本文标题: Android Gradle模块依赖替换使用技巧

本文链接: https://lsjlt.com/news/152331.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作