jar包衝突解決方法,解決jar與jar衝突,jar與aar衝突,不想刪除任何一個包,只能修改其中一個jar包包名即可解決

問題來源:接入兩個廣告商出現包名衝突,一個是aar,另一個是jar,提示語

檢查後發現kj_sdk_1.1.0.jar和hmsdk.aar裏面都有一個com.a.a.a.class的類衝突了。搗騰半天無法解決,各種衝突法子都嘗試過。本身想讓這兩個廣告商其中一個改一下jar包,最終通過高人指點去改hmsdk.aar裏面衝突的包名,在此記錄。

如若是jar和jar的衝突可忽略步驟1和步驟2

步驟1:把hmsdk.aar文件改成hmsdk.zip,解壓後如下圖所示,可看到classes.jar,這裏面就包含着衝突的類。

步驟2:即classes.jar和kj_sdk_1.1.0.jar衝突。(到這一步就是把aar和jar衝突轉化成jar和jar的衝突。)

(1)我本地已經有jarjar-1.4.jar,則直接使用。沒有的首先下載個工具jarjar.jar,下載地址

https://download.csdn.net/download/weixin_42310890/10569705

(2)將jarjar-1.4.jar和classes.jar單獨放到我在D盤創建了一個hmsdk_chang_jar文件下,如圖:

(3)創建一個rule.txt文件:

寫入 rule com.a.**  com.hmob1.@1     後關閉rule.txt文件

意思爲com.a都轉成con.hmbol1的包名,只改前面的二級com.a,當然你也可根據需求多改幾級

(4)在cmd中輸入命令改包名,打開cmd。

         1)  d:        (備註:我文件創建在d盤。則需輸入d:  若爲其他盤相對應輸入字母)

         2)  cd D:\hmsdk_chang_jar       (備註:cd後面跟着你需要改的jar包的路徑。我要改的classes.jar和jarjar-1.4.jar的路徑是D:\hmsdk_chang_jar)

        3)  java -jar jarjar-1.4.jar process rule.text classes.jar output.jar      (備註  java -jar 下載下來的工具jar包  process 創建更改包名的txt  需要修改的jar 包名修改後的jar)

     若成功的執行以上三個命令後 D:\hmsdk_chang_jar文件下就會出現output.jar。

     到此jar和jar的包名衝突已解決完畢

 

驗證是否更改成功的方法,可以創建兩個文件夾,修改前的包存放classes.jar,修改後的包存放output.jar

分別對兩個jar進行解壓。如下圖所示,則修改成功

 

步驟3:把output.jar重新命名爲classes.jar。把步驟1中hmsdk.zip解壓出來的文件夾中的classes.jar替換掉。這一步是修改包名後的jar替換修改前的jar。

選中所有文件右鍵選擇添加到壓縮文件夾   

注意:選中的文件格式一定是zip的。如下圖所示:

得到一個壓縮文件hmsdk.zip,再把hmsdk.zip的後綴名改成aar,即hmsdk.aar。最終得到的hmsdk.aar替換掉衝突的hmsdk.aar文件,問題得以解決。

本人耗時比較長的是步驟3,文件的壓縮格式爲rar改成aar,android  studio識別不了aar文件,所以格式一定要注意是ZIP

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章