1

好的,这个线程将更像是对标题中提到的主题的讨论。我一遍又一遍地搜索整个主题,但没有找到适合我的好的/可接受的解决方案。

设想

假设我有一个 android 项目,我需要一个第三方库(例如drag-sort-listview library)。

如何整合它?

没有 Git

根据官方文档这个线程,我们应该这样做(简化!):

  1. 将项目导入 Eclipse(来自现有的 Android 源)
  2. 转到您的项目属性 -> Android -> 添加库(从您的工作区)

使用 Git

  1. 为第三方库制作一个 Git 子模块。在项目的文件夹中执行此操作(例如 myproject/thirdpartylibs/newLibrary)

  2. 与上述步骤相同,但作为“现有源”选择您刚刚克隆到项目中的那个

讨论

对我来说:这根本不令人满意!

为什么?

首先:我不想在我的工作区中有一个库项目——我只是不关心它。我只是想使用它。我想要一个可以放入我的“libs”文件夹中的 JAR(如此所述)。可悲的是,您无法从库项目(source)中创建罐子(或者是否有隐藏的方式?)。

其次:拉我项目的每个人都要手动生成第三方库的项目,然后添加到项目中。因此,如果有人只是拉动我的项目,除非他这样做,否则它将无法正常工作。如果你问我,那就太糟糕了..(或者我在这里遗漏了什么?)

第三:Git 子模块在大多数情况下看起来有点矫枉过正。将 JAR 放在 libs 文件夹中并完成它会容易得多。当然,这样做的工作量并不大,但它只是为您的项目增加了另一层“复杂性”。

问题

我是唯一一个因此而生气的人吗?

大男孩是如何做到的(如 CyanogenMod 等)?

为什么仍然有 JAR 库(例如ORMLite)?这仅仅是因为他们不需要android特定的资源和东西吗?或者有谁知道为什么他们可以用他们的库构建一个 JAR 而“所有”其他人不能?

4

1 回答 1

3

我是唯一一个因此而生气的人吗?

不。

大男孩是如何做到的(如 CyanogenMod 等)?

CyanogenMod 是 AOSP Android 的一个完整分支,其工作级别低于 SDK 库。将它们与 Android 库项目进行比较并不是一个好主意。

为什么还有 JAR 库(例如 ORMLite)?

可以为不使用任何R.*.*资源的任何项目创建 JAR。您也可以从其他项目创建 JAR,但它们会以ResourceNotFoundException. 为了解决这个问题,您可以让用户将所有需要的 XML 资源添加到他们的项目中(就像 ACRA 所做的那样,如果您选择使用他们库的警报部分,则要求您添加 XML 字符串)。

或者有谁知道为什么他们可以用他们的库构建一个 JAR 而“所有”其他人不能?

因为他们不使用该R部分的 XML 资源。XML 资源没有捆绑到 JAR 中,因为 JAR 仅用于代码。Android 将所有 XML 资源编译成一个二进制文件,该文件单独包含在您的 apk 中。

于 2013-04-19T07:19:45.557 回答