Android库项目 - 讨论/最佳方式

时间:2013-04-19 07:11:44

标签: android

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

方案

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

如何整合?

没有Git

根据official documentationthis线程,我们应该这样做(简化!):

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

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

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

    3. 讨论

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

      为什么呢?

      首先:我不想在我的工作区中使用库项目 - 我只是不关心它。我只是想用它。 我想要一个可以放在我的“libs”文件夹中的JAR(如here所述)。遗憾的是,你不能用图书馆项目(source)创建Jars(或者有隐藏的方式吗?)。

      其次:拉动我项目的每个人都必须手动生成第三方库的项目,然后将其添加到项目中。因此,如果有人只是拉动我的项目,那么在他这样做之前它将无法工作。如果你问我,那就太糟糕了..(或者我在这里错过了一些东西?)

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

      问题

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

      大男孩们如何做到这一点(如CyanogenMod等)?

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

1 个答案:

答案 0 :(得分:3)

  

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

没有

  

大男孩们如何做到这一点(如CyanogenMod等)?

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

  

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

可以为任何不使用任何R.*.*资源的项目创建JAR。您也可以从其他项目创建JAR,但它们会以ResourceNotFoundException而死。为了解决这个问题,您可以让用户将所有必需的XML资源添加到他们的项目中(例如,如果您选择使用其库的警报部分,请通过请求您添加XML字符串来实现ACRA)。

  

或者有人知道为什么他们可以用他们的图书馆建立一个JAR而“其他所有人”不能吗?

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