我正在开发一个将使用Kafka的 Android 应用程序。它有很多依赖项,所以我决定使用 Ivy 来管理它们(尽管我以前从未使用过它,而且我一般对 Apache 的东西没有经验)。
我的问题是 Kafka 的依赖项之一snappy-java有一个“native”文件夹,其中包含 linux、mac 和 windows 的本地库,而 Android 会抛出错误The library 'snappy-java-1.0.4.1.jar' contains native libraries that will not run on the device.
如果我只是手动包含库,我会取出 snappy -java jar,从源代码重新编译,没有native
文件夹,然后放回项目中。由于 Ivy 是自动构建的,我想我必须通过ivy.xml
文件来完成它,但我不确定如何。
我正在尝试直接从依赖项中排除该文件夹:
<dependency org="org.xerial.snappy" name="snappy-java" rev="1.0.4.1" conf="compile->default(compile)">
<exclude org="org.xerial.snappy" module="snappy-java/native" name="*" type="*" ext="*" matcher="exact"/>
</dependency>
但这并没有改变任何东西。我查看了 Ivy 上的文档<exclude>
,似乎更多的是排除传递依赖,或者排除整个模块。是否有可能得到更具体的?
似乎有一种方法可以通过弄乱 snappy-java 的 ivy 文件来做到这一点<conf>
,<artifact>
但我也无法让它工作,而且我认为 Ivy 无论如何都会自动生成这些文件。谁能指出我正确的方向?提前致谢。