在Android库中包含JAR文件的好主意(可能与其他库冲突)?

时间:2014-01-31 22:30:46

标签: android shared-libraries conflict

我的Android库需要一些较新的Apache HTTPClient jar文件,以便我可以上传多部分文件(See related SO question

我很确定会有一些应用程序在那里使用我的库已经有不同版本的这些Apache JAR文件,导致冲突。

我已经在android-support-v4.jar和第三方库中看到过这种情况。是否有最佳实践解决方案,或者我应该从头开始实施多部分上传?

3 个答案:

答案 0 :(得分:1)

您可以重新打包apache http客户端,以便它使用新的包名称,以便它不会与类路径上的任何其他版本冲突。

question解释了如何使用maven shade plugin

执行此操作

article解释了如何使用jarjar和ant。

答案 1 :(得分:1)

另一个选项是httpclientandroidlib。基本上,作者创建了一个脚本来更改包名称(因此它不与Android版本冲突)并删除一些功能(由于依赖于org.ietf.jgss)。

可以找到脚本here

答案 2 :(得分:1)

我想说最佳实践是将您的库构建为具有依赖关系的Maven项目。今天的大多数库都以这种方式提供,它还允许您自动生成包含或不包含依赖关系的jar。

例如参见http://search.maven.org/#search%7Cga%7C1%7Cdagger-compiler的dagger-compiler 它包含一个没有依赖项的jar和一个jar-with-dependencies