繁体   English   中英

如何删除aar文件中的jar文件?

[英]How do delete a jar file within an aar file?

所以我试图让一个应用程序在工作中运行,但出现此错误:

任务':app:transformResourcesWithMergeJavaResForDebug'的执行失败。 com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在APK org / snmp4j / util / doc-files / org_snmp4j_util.gif File1中复制的重复文件:/ Users / Kelson / Documents / AndroidStudioProjects /aspen-android/app/libs/snmp4j.jar File2:/Users/Kelson/Documents/AndroidStudioProjects/aspen-android/app/build/intermediates/exploded-aar/libscanmanager-release/jars/libs/snmp4j.jar File3: /Users/Kelson/Documents/AndroidStudioProjects/aspen-android/app/build/intermediates/exploded-aar/devicediscoverymanager-release/jars/libs/snmp4j.jar

我认为这是引发此错误的原因,因为snmp4j.jar已经在应用程序li​​bs文件夹中,但随后在libscanmanager和devicediscoverymanager aar文件中也包含了snmp4j并再次进行编译。 我认为解决方案是从aar文件中删除snmp4j,但我不知道该怎么做。 每次我尝试snmp4j都会在aar中重建。 这是外部库选项卡中文件的外观。 链接到图片

我认为正在发生的是,每次运行它都会从classes.jar中的org.snmp4j重新编译snmp4j.jar,因此,每次尝试删除snmp4j.jar时,它都会重新创建。 手动删除org.snmp4j似乎无效。 那么有没有办法删除它或阻止它编译呢? 还是在主应用程序中使用它们之前,我是否必须去libscanmanager和devicediscoverymanager的源并重建该库?

还是这完全是错误的方法,而我确实遗漏了一些明显的东西?

更新

因此,我认为我找到了解决方案的可能途径,即添加像这样的排除命令

compile(name: 'devicediscoverymanager-release', ext: 'aar') {
    exclude module: 'snmp4j'
}

但我不太确定确切的语法,因此也没有用。 我试过排除模块,使用snmp4j.jar,snmp4j,org.snmp4j等排除组。问题可能是这是针对依赖项的,据我所知snmp4j不是库的依赖项,只是正在建设。 有没有一种方法可以将罐子专门从应用程序的外部库中打包出来,而不专门将罐子打包到apk中?

更新2

因此,根据这些人的说法: https ://groups.google.com/forum/#!topic/adt-dev/g1AiJM7PeVs实际上,我实际上不可能从aar文件中排除snmp4j。 似乎需要重建库以不包含snmp4j

我遇到了同样的问题,因此在android部分的应用程序的build.gradle文件中,只需添加此代码块即可

 packagingOptions {
        exclude 'give file name which for which error is occuring'

    }
    for example-

    packagingOptions {
        exclude 'META-INF/ASL2.0'

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM