好的,这个帖子更像是对标题中提到的主题的讨论。我一遍又一遍地搜索整个主题,但没有为我找到一个好的/可接受的解决方案。
方案
假设我有一个android项目,我需要一个第三方库(例如drag-sort-listview library)。
如何整合?
没有Git
根据official documentation和this线程,我们应该这样做(简化!):
使用Git
为第三方库创建一个Git子模块。在项目的文件夹中执行此操作(例如myproject / thirdpartylibs / newLibrary)
与上述步骤相同,但“现有来源”选择您刚刚克隆到项目中的那个
讨论
对我来说:这根本不令人满意!
为什么呢?
首先:我不想在我的工作区中使用库项目 - 我只是不关心它。我只是想用它。 我想要一个可以放在我的“libs”文件夹中的JAR(如here所述)。遗憾的是,你不能用图书馆项目(source)创建Jars(或者有隐藏的方式吗?)。
其次:拉动我项目的每个人都必须手动生成第三方库的项目,然后将其添加到项目中。因此,如果有人只是拉动我的项目,那么在他这样做之前它将无法工作。如果你问我,那就太糟糕了..(或者我在这里错过了一些东西?)
第三:Git子模块在大多数情况下看起来像是一种矫枉过正。将JAR放在libs文件夹中并完成它会更容易。当然,这样做并不多,但它只是为你的项目添加了另一层“复杂性”。
问题
我是唯一因此而生气的人?
大男孩们如何做到这一点(如CyanogenMod等)?
为什么还有JAR库(例如ORMLite)?这只是因为他们不需要特定于Android的资源和东西吗?或者有谁知道为什么他们可以用他们的库建立一个JAR而“所有”其他人不能?
答案 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中。