Android Studio中Android库与Java库的区别

时间:2015-01-13 15:21:21

标签: java android eclipse android-studio android-library

enter image description here

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

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

这是否正确,是否还应该注意其他差异?

3 个答案:

答案 0 :(得分:2)

Android库是" android库项目"在过去。

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

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

答案 1 :(得分:2)

就像每个项目类型的小描述所说,Android库只是另一个Android应用程序项目,通常称为Module.And Java Library是java项目的另一个词。module之间的唯一区别而project是复杂性。 看一下intellij关于模块的简短描述以及它们与以下内容的区别:

  

基于模块的项目结构

     

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

enter image description here

  

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

source

This也是一本很好的读物。

答案 2 :(得分:1)

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资产(即,您在Assets文件夹中放置的任何内容)。资源名称不要互相冲突也是开发人员的责任。 android开发人员建议您为每个android库中的资源名称分配唯一的前缀。 Java库无法引用任何android SDK类,例如android.content.Context等。)您可以采取一些技巧来解决最后的限制,但这涉及将aar转换为jar。只要您不在aar中使用任何android资源,就可以这样做。可能要进行这种转换的原因是,您可以拥有“ compileOnly”依赖项。当前,您不能对aar库具有compileOnly依赖关系,但可以对jar库具有依赖关系。 OSGI应用程序开发人员需要使用此技术,他们需要引用包含android SDK类的接口。 android开发人员团队强烈要求修改compilieOnly限制。