Android 在内部导入库与从外部导入库的好处

2022-09-02 22:20:17

在 ADT 17 之后,非 Android 库需要包含在项目的“libs”文件夹中,或者通过构建路径中的“排序和导出”选项卡导出。从外部导入库有什么区别(如果有):

External1

External2

内部

Internal2

Internal1

以包含在“Android 依赖项”组中的方式导入库是否有优势?


答案 1

如何将外部jar依赖项添加到Android项目的构建路径(内部或外部)中,对实际的构建过程(更具体地说是在编译和dex步骤中)没有影响,它所做的只是告诉构建过程在编译和dex步骤中查找所需的jar。

窗口中显示的元素只是ADT插件用于管理/分组jar依赖项的另一个抽象层。您的外部jar文件(在您的情况下是android-support-v4.jar)在该窗口中出现(内部或外部)没有任何区别。Android DependenciesJava Build Path - LibrariesAndroid Dependencies

自 r17 以来,依赖关系管理有了很大的改进,建议使用 libs/ 目录存储所有 jar 依赖关系(参考您内部方式),这被认为是一种自动化方法(因为 ADT 插件现在变得更加智能),请参阅 ADT 17.0.0 的修订

新的构建功能

  • 添加了自动设置 JAR 依赖项的功能。/libs 文件夹中的任何.jar文件都将添加到构建配置中(类似于 Ant 构建系统的工作方式)。此外,库项目所需的.jar文件也会自动添加到依赖于这些库项目的项目中。(更多信息)

但是,如果您愿意,您仍然可以使用旧方式(请参阅外部方式),这被认为是手动方法(因为ADT插件以前很愚蠢),请参阅r17版本的最近更改

重要提示:如果您仍在手动引用 jar 库,而不是将它们放在 libs/ 下,请注意以下事项:

  • 如果项目是库项目,则这些 jar 库不会自动对应用程序项目可见。你真的应该把它们移到 libs/

  • 如果项目是一个应用程序,这可以工作,但您必须确保将jar文件标记为已导出。

以包含在“Android 依赖项”组中的方式导入库是否有优势?

从依赖关系管理的角度来看,自动化与手动,在计算机科学领域,自动化总是被认为比手动更无误。


答案 2

第一,显示停止,“我不敢相信他们没有测试这个”,将外部jar放在libs目录中的缺点是您无法为它们设置javadocs位置,因为该选项显示为“无(不可修改)”。

因此,我仍然在构建属性中使用导出选项


推荐