Android开发引用本地module的小技巧

发布时间:2024年01月03日

Android开发中,如何引用本地module?

? 在 Android 项目中,如果你想要引入一个本地的 module 作为依赖,你需要确保该 module 已经在你的项目结构中定义,然后在你的主 modulebuild.gradle 文件中使用 implementation 关键字加上 project 引用来声明该依赖。

? 以下是将名为 :mylibrary 的本地 module 引入一个 module (通常是 app module) 的 build.gradle 文件的示例代码:

// 在 app 的 build.gradle 中

dependencies {
    // ... 其他依赖 ...

    // 引入你项目中的一个本地 module(例如一个叫做 'mylibrary' 的 library module)
    implementation project(':mylibrary')
}

? 确认 module 的名字与你在 settings.gradle 文件中声明的一致:

// 在 settings.gradle 文件中
include ':app', ':mylibrary'
// ... 其他 module ...

? 这里 :app 是你的主应用 module:mylibrary 是你要引入的本地 library moduleinclude 关键字告诉 Gradle 包含哪些 module 进行构建。

? 确保做了以上配置后,你的项目结构应该是这样的:

YourProject/
├── app/
│   └── build.gradle
├── mylibrary/
│   └── build.gradle
└── settings.gradle

? 在上述目录结构中,app 是主要的应用 module,而 mylibrary 是你希望作为依赖引入的本地 module。它们都有各自的 build.gradle 配置文件。同时,settings.gradle 文件在项目的根目录下,定义了哪些 module 是工程的一部分。

如果要引用的本地module不是当前项目中的module,而是和当前项目在同一上层目录的module,该怎么办?

? 如果你要引入的模块并不是当前项目的一部分,而是位于与当前项目相同的父目录中,你需要采取一些不同的步骤来正确地引用它。首先,你需要在 settings.gradle(或者在 Gradle 6.5 以后版本中称为 settings.gradle.kts)文件中正确地包括你的模块,并定义模块路径。

? 此处假设你有这样的目录结构:

RootDirectory/
├── CurrentProject/
│   ├── app/
│   │   └── build.gradle
│   └── settings.gradle
└── OtherModule/
    └── build.gradle

? 为了在 CurrentProject 中引用与其同级目录的 OtherModule,你需要在 CurrentProject/settings.gradle 文件中这样设置:

// 在 CurrentProject 的 settings.gradle 文件中
rootProject.name = 'CurrentProject'

include ':app'
include ':othermodule'
project(':othermodule').projectDir = new File(settingsDir.parentFile, 'OtherModule')

? 上面的设置做了以下几点:

  1. 手动包含了名为 othermodule 的模块。
  2. 设置了 othermodule 的项目路径,使其指向外层目录中的 OtherModule 文件夹。

? 然后,在 CurrentProject/app/build.gradle 中添加对 othermodule 的依赖:

// 在 CurrentProject/app 的 build.gradle 文件中
dependencies {
    // ... 其他依赖 ...

    // 引入同一上层目录中的 OtherModule 作为依赖
    implementation project(':othermodule')
}

? 以上设置即可使得 CurrentProject 能够正确地找到并引入它同级目录的 OtherModule 作为一个依赖项。

	更复杂的目录结构,可以根据上述思路举一反三。
文章来源:https://blog.csdn.net/ldld1717/article/details/135367019
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。