Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio中Android库和Java库的区别_Java_Android_Eclipse_Android Studio_Android Library - Fatal编程技术网

Android Studio中Android库和Java库的区别

Android Studio中Android库和Java库的区别,java,android,eclipse,android-studio,android-library,Java,Android,Eclipse,Android Studio,Android Library,在Android Studio中创建新模块时,我们可以在Android库和Java库之间进行选择。通过对两者的修补,我的理解是Android库可以访问Android资源,而Java库只能访问Java资源 因此,在AndroidStudio中创建Java库就像在普通JavaIDE(如Eclipse)中创建新库一样。(它甚至似乎让我们可以访问RMI,而Android不支持RMI。) 这是正确的吗?还有其他的区别吗?安卓图书馆这是过去的“安卓图书馆项目” 它只是android模块,可以包含在您的项目中

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

因此,在AndroidStudio中创建Java库就像在普通JavaIDE(如Eclipse)中创建新库一样。(它甚至似乎让我们可以访问RMI,而Android不支持RMI。)

这是正确的吗?还有其他的区别吗?

安卓图书馆这是过去的“安卓图书馆项目”

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


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

就像每个项目类型的小说明所说,android库只是另一个android应用程序项目,通常被称为模块。Java库是Java项目的另一个词。
模块
项目
之间的唯一区别是复杂性。 请看
intellij
中关于模块及其区别的精彩描述:

基于模块的项目结构

此功能非常适合具有多个内部依赖项的复杂项目,尤其是J2EE项目。模块是项目的一个独立逻辑部分,它包含您的工作源代码、库、对目标Java SDK的引用等。它可以作为独立实体进行编译、运行或调试

一个项目可以由一个或多个模块组成。模块可能相互依赖。模块和库可以在多个项目之间轻松共享


这也是一本很好的读物。

android库是aar,java库是jar。从技术上讲,两者都是罐子,但它们的结构组成彼此略有不同。例如,aar如下所示:

res  <android resources dir>
values
AndroidManifest.xml
classes.jar
    <classpath structure>
         <.class's>
R.txt
<classpath structure>
     <.class's>
META-INF
res
价值观
AndroidManifest.xml
classes.jar
META-INF
如前所述,java库不能包含任何android资源,如布局、值、颜色和样式。android库可以包含android资源,但不能包含任何原始android资产(即,您放入资产文件夹中的任何内容)。资源名称之间不发生冲突也是开发人员的责任。android开发者建议您为每个android库中的资源名称指定唯一的前缀。Java库不能引用任何android SDK类,如android.content.Context等)要绕过最后一个限制,您可以使用一些技巧,但这需要将aar转换为jar。这是可以做到的,只要你没有在aar中使用任何android资源。可能需要进行转换的原因是,您可以拥有一个“compileOnly”依赖项。目前,您不能对aar库具有compileOnly依赖性,但可以对jar库具有compileOnly依赖性。OSGI应用程序开发人员使用这种技术,他们需要引用包含android SDK类的接口。android开发者团队有一个未完成的请求,要求修改此CompileOnly限制