在 Android Studio 中,一个 App 模块引用另一个 Java Library 模块的过程主要包括创建 Java Library 模块、配置模块依赖、同步项目和使用依赖中的类四个核心步骤,具体如下:
1. 创建 Java Library 模块(若已有则跳过)
- 打开 Android Studio 项目,点击
File > New > New Module。 - 在弹出的窗口中选择
Java or Kotlin Library,点击Next。 - 填写模块名称(如
mylibrary)、包名(如***.example.mylibrary),选择语言为Java,点击Finish。 - 生成的 Java Library 模块会包含基础目录结构(
src/main/java存放源码),默认使用java-library插件(在其build.gradle.kts中可见)。
2. 在 Java Library 中编写代码
- 在 Java Library 模块的
src/main/java/[包名]下创建工具类或业务类,例如:// 路径:mylibrary/src/main/java/***/example/mylibrary/MyUtils.java package ***.example.mylibrary; public class MyUtils { public static int add(int a, int b) { return a + b; } } - 确保类和方法使用
public修饰(以便跨模块访问)。
3. 在 App 模块中添加依赖
- 打开 App 模块(通常名为
app)的build.gradle.kts(或build.gradle)。 - 在
dependencies代码块中添加对 Java Library 模块的依赖:// app/build.gradle.kts dependencies { // 引用名为 "mylibrary" 的 Java Library 模块 implementation(project(":mylibrary")) // 其他依赖(如 Android 支持库) } - 点击右上角
Sync Now同步项目,使依赖生效。
4. 在 App 模块中使用 Java Library 的代码
- 在 App 模块的代码(如
MainActivity)中,导入 Java Library 中的类并使用:// 路径:app/src/main/java/***/example/myapp/MainActivity.java import android.os.Bundle; import androidx.app***pat.app.App***patActivity; import ***.example.mylibrary.MyUtils; // 导入 Java Library 中的类 public class MainActivity extends App***patActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 调用 Java Library 中的方法 int result = MyUtils.add(2, 3); // 后续使用 result... } }
5. 特殊场景:运行 main 方法时的配置(若需)
- 若在 App 模块中通过
main方法(非 Android 组件)调用 Java Library,需确保运行配置的类路径包含 Java Library 模块:- 打开运行配置:
Run > Edit Configurations。 - 点击
Modify options, 点击下拉的Modify classpath - 点击
+号,需要添加的是你依赖的 Java Library 模块的编译输出路径,具体来说是该模块编译后生成.class文件的目录。
- 打开运行配置:
对于 Java Library 模块(如 test 模块),正确的路径通常是:
[模块名称]/build/classes/java/main
例如:
- 若模块名为
test,则路径为test/build/classes/java/main - 若模块名为
dbscan_test,则路径为dbscan_test/build/classes/java/main
为什么要添加这个路径?
JVM 运行时需要通过类路径(Classpath)找到所有依赖的 .class 文件。Java Library 模块的代码编译后会生成 .class 文件并保存在 build/classes/java/main 目录下,只有将这个目录添加到运行配置的 Classpath 中,JVM 才能找到该模块中的类(如 MyClass)。
注意:
- 不要添加源码路径(如
src/main/java),必须添加编译后的输出路径(build/classes/...)。 - 如果模块名称或项目结构不同,路径可能略有差异,但核心是找到包含
.class文件的main目录。
添加后重新运行 main 方法,JVM 就能正确加载依赖模块中的类了。
核心原理
- Java Library 模块被编译为字节码(
.class文件),App 模块通过依赖配置将其纳入编译和运行路径。 - Android Studio 会自动处理模块间的依赖关系,确保编译时能找到 Java Library 中的类,运行时能正确加载。
通过以上步骤,App 模块即可复用 Java Library 中的代码,实现功能拆分和复用。