sdk合并报错:app:transformResourcesWithMergeJavaResForDedug,资源文件/META-INF/MANIFEST.MF重复

碰到这个问题,情况是这样的:自己的sdk(libriray)里面存在三个library(三种支付的library),然后自己出包打成一个jar包,在另外一个demo中,引入这个jar包,和另外三个支付的library,结果就出现了如下报错:

这里写图片描述

意思就是说:在classes.jar和HeepayPlugin_3.5.jar中,出现了资源META-INF/MANIFEST.MF的重复文件。

按照网上的说法,在classes.jar和当前demo,以及HeepayPlugin_3.5.jar中的build.gradle中添加如下代码,就能过滤:

 packagingOptions {
        exclude 'META-INF/MAINFEST.MF'
    }

但是,不好意思,对不起,这种方法不对,解决不了,因为出的包–有冲突的2个资源文件在同一路径下!所以解决这个问题的根本原因就是要分离classes.jar和HeepayPlugin_3.5.jar 的路径。

解决方案如下:
第一步:在当前demo下,新建一个空module,命名为mylibrary,将三个支付的jar,导入其module中的lib里面,并且删掉原有的demo中的lib下的应用,编译,发现报资源性的错误,可能需要删掉module中中build.gradle里面的如下代码:

 compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'

第二步:将原有的sdk(library)引入到当前项目下,命名为devsdk,然后在devsdk的build.gradle下引用mylibrary,如下:

 compile project(':mylibrary')

第三步,在原demo中删掉所有的lib的引用,然后在其build.gradle中引用module–devsdk,如下

 compile project(':devsdk')

运行,项目,即可,最后项目结构如下
这里写图片描述

如果想把,项目结构变得更加简单,可以删掉module –devsdk和mylibrary,同时build devsdk生成classes.jar包,将新生成的classes.jar和另外三个jar一起放入到demo的lib中,即可
最终demo下的buil.gradle文件如下:

dependencies {
    compile files('libs/alipaySdk-20160223.jar')
    compile files('libs/classes.jar')
    compile files('libs/HeepayPlugin_v3.5.jar')
    compile files('libs/libammsdk.jar')
}

结构目录如下:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值