Gradle从aar中排除类

3
我在我的依赖项中使用lib Gson,并导入了一个包含一些从Gson导入到项目中的类的.aar文件。 当我构建我的项目时,由于存在于我的依赖项和aar类中,我不断收到重复的类。
我如何排除aar中的gson类?
我一直在尝试以下方法:
- 排除组:我认为这不起作用,因为它不是来自aar的依赖项,而是内部的类。 - transitive true,与之前相同的原因
我能做到吗?还是应该获取其他具有gson依赖项的.aar文件?

你是将gson作为gradle依赖添加,还是直接将gson的源文件复制到你的项目中?如果是后者,请移除这些文件并将gson作为依赖添加。只要在所有库中使用相同的版本,就不应该会有问题。如果你将它们导出为aar文件并再次包含它们,请确保将库所需的依赖项添加到根项目中。如果还有其他情况,请展示给我们你的gradle依赖项。 - undefined
从gson复制源文件,但我无法将其作为依赖添加,因为我无法控制它,所以我必须这样使用。 将aar与gson源代码一起使用,并在我的项目中使用gson依赖。 - undefined
这段写得有点混乱...你能列出相关的依赖项,并说明如何将它们添加到你的项目中吗?(gradle、aar、源代码复制)。另外,如果你有任何aar文件,请提取出来并检查其中是否包含gson命名空间,或者在pom文件中是否声明了该依赖项。 - undefined
如果我理解正确,gson被打包到aar中,并且您无法访问aar的源代码,那么您需要找到一种方法来移除aar中的gson部分,提供自己的gson作为依赖,并希望aar与该版本兼容。 - undefined
这就是我在问的,我能做到吗?:) 我无法更改aar内部,所以我必须在编译时排除aar中的类,并使用我的。 - undefined
2个回答

0

抱歉,但是gson不是作为pom依赖项存在的,而是源代码复制。 - undefined

0
下载并解压原始的 .aar 库文件 从库中删除您想要排除的特定类文件
unzip original_lib.aar -d out/
cd out/
zip -d classes.jar "com/something/ClassToBeRemoved.class"
jar cvf ../my_new_lib.aar

现在你有一个名为my_new_lib.aar的新AAR库文件,其中不包括指定的类文件。
您可以使用以下方法将本地.aar库包含到Gradle中:
implementation files('aar/my_new_lib.aar')

记得将"com/something/ClassToBeRemoved.class"替换为你想要排除的类文件的实际路径和名称。此外,在执行这些命令时,请确保你处于正确的目录中。
这种方法允许你手动从AAR库中删除特定的类文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接