天天看點

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'}