Android 库和 Java 库在 Android Studio 中的区别

Difference between Android library and Java library in Android Studio

在 Android Studio 中创建新模块时,我们可以在 Android 库和 Java 库之间进行选择。通过对两者进行修补,我的理解是 Android Library 可以访问 Android 资源,而 Java Library 只能访问 Java 资源。

所以在 Android Studio 中创建一个 Java 库就像在一个普通的 Java IDE 中创建一个新库,例如 Eclipse。 (它甚至似乎让我们可以访问 Android 不支持的 RMI。)

这是正确的吗,还有其他应该注意的差异吗?

Android图书馆是"android library project"过去的

它只是 android 模块,可以包含在您的项目中。正如您所说,它具有 android 资源,并且您自己的项目也可以访问包含的库资源(如样式或布局)。

此库类型必须用于创建自定义视图或活动或其他 android 元素

正如每个项目类型的小描述所说,Android 库只是另一个 Android 应用程序项目,通常称为 Module.And Java 库是另一个java project.The 的唯一区别是 moduleproject 的复杂性。 看看 intellij 关于模块的精彩描述以及它们与 :

的区别

Module-based project structure

This feature is ideal for complex projects, with multiple internal dependencies, and especially for J2EE projects. Module is a separate logical part of a project that incorporates your working sources, libraries, reference to target Java SDK, etc. It can be compiled, run or debugged as a standalone entity.

A project may consist of one or multiple modules. Modules may depend on each other. Modules and libraries can be easily shared among multiple projects.

source

This 也是一本好书。

android库是aar,java库是jar。从技术上讲,两者都是罐子,但它们的结构组成略有不同。例如 aar 看起来像这样:

res  <android resources dir>
values
AndroidManifest.xml
classes.jar
    <classpath structure>
         <.class's>
R.txt

java 库如下所示:

<classpath structure>
     <.class's>
META-INF

如前所述,java 库不能包含任何 android 资源,例如布局、值、颜色、样式。 android 库可以包含 android 资源,但它不能包含任何原始 android 资产(即您放入资产文件夹中的任何内容)资源名称不包含在内也是开发人员的责任相互碰撞。 android 开发人员建议您为每个 android 库中的资源名称分配唯一的前缀。 Java 库不能引用任何 android SDK 类,例如 android.content.Context,等等。)您可以使用一些技巧来绕过最后一个限制,但这涉及转换一个放入罐子里。只要您不使用 aar 中的任何 android 资源,就可以做到这一点。人们可能想要进行这种转换的原因是您可以拥有 "compileOnly" 依赖性。目前,您不能对 aar 库有 compileOnly 依赖,但可以对 jar 库。需要引用包含 android SDK 类 的接口的 OSGI 应用程序开发人员使用此技术。 android 开发人员团队提出了修改此 compilieOnly 限制的未决请求。