【问题标题】:Android Library Project - Discussion / Best wayAndroid 库项目 - 讨论 / 最佳方式
【发布时间】:2013-04-19 07:11:43
【问题描述】:

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

场景

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

如何整合?

没有 Git

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

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

使用 Git

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

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

讨论

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

为什么?

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

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

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

问题

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

大佬们是怎么做到的(比如 CyanogenMod 等)?

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

【问题讨论】:

    标签: android


    【解决方案1】:

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

    没有。

    大佬们是怎么做到的(比如 CyanogenMod 等)?

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

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

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

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

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

    【讨论】:

    • 谢谢 - 证实了我的怀疑。这么短的说:现在没有更好的办法了吗?
    • @tenhouse 除了 ACRA 使用的方式,没有。
    • 再次感谢。如此愚蠢和荒谬......而且我知道 CM 处于较低水平 - 只是认为他们也需要像我们一样不时使用库:)
    • 这可能是一个愚蠢的评论,但是您是否使用 android-maven-plugin (code.google.com/p/maven-android-plugin) 研究过 maven?
    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2015-05-18
    相关资源
    最近更新 更多