天天看点

transformDexArchiveWithExternalLibsDexMergerForDebug 问题的完美定位[转载]

  • 定位方法参考地址:

    transformDexArchiveWithExternalLibsDexMergerForDebug

– double Shift:全局查找,这个查看和Alt+H稍稍有些不同,这个是全局文件查找,到文件名称层面。

exclude 剔除掉多余的包

场景一

要移除的jar包不在aar包中的classes.jar中

直接把aar包里的Jar打包的时候给去掉,就像下面这这样。注意,要使用exclude module这种方式,直接使用exclude group方式没有效果。exclude group的方法适用于exclude JAR包中的文件。

    implementation(name: '×××××××aar包', ext: 'aar') {
        exclude module: 'gson'
    }
           

场景二

要移除的jar包在aar包中的classes.jar中

这个时候,使用exclude方法已经不能生效了。你可以使用下面的通用方法

解压aar文件到tmpDir目录下 
unzip ×××.aar -d tmpDir
找到classes.jar包,用压缩工具打开,删除目标文件
将tmpDir重新打包成一个新的aar 
jar cvf ×××NewLib.aar -C tmpDir/
补充:我在Ubuntu下直接使用压缩工具打开aar包,然后删除其中的重复的文件,这个方法也是可行的。

           

3,在需要v4包的地方exclude掉annotation包,注意compile要多加个括号:

compile ('com.android.support:support-v4:22.1.0'){exclude module: 'support-annotations'}