18

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

外部1

外部2

内部

内部2

内部1

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

4

4 回答 4

9

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

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

从r17开始,依赖管理有了很大的改进,推荐使用libs/目录存储所有jar依赖(参考你内部的方式),这被认为是一种自动化的方式(现在ADT插件变得更智能了),见Revisions对于 ADT 17.0.0

新的构建功能

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

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

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

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

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

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

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

于 2012-05-20T04:03:09.527 回答
2

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

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

于 2012-05-20T14:43:56.910 回答
1

它与Android的库依赖管理有关。有关详细信息,请参阅http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

于 2012-05-07T08:19:01.963 回答
0

来自Eclipse 常见问题解答

内部资源驻留在工作台中的某个项目中,因此由工作台管理;与其他资源一样,这些资源可以由工作台进行版本管理。外部资源不是工作台的一部分,只能通过引用来使用。例如,JRE 通常是外部的并且非常大,不需要将它与 VCM 系统相关联。

因此,很简单,如果您希望能够将 JAR 作为项目的一部分进行管理,将其公开给 SCM 等,然后将其视为内部资源,否则将其视为外部资源。它不会对最终产生的APK产生任何影响,它只是一个eclipse的东西。

如果您想避免每次使用库时都创建副本,请将其视为外部资源。但是,我可以建议你看看mavenandroid maven 插件吗,maven 有一点学习曲线(特别是如果你习惯于“制作”或“蚂蚁”风格的构建脚本),但这是非常值得的努力.

于 2012-05-20T23:52:36.313 回答