问题来源:接入两个广告商出现包名冲突,一个是aar,另一个是jar,提示语

检查后发现kj_sdk_1.1.0.jar和hmsdk.aar里面都有一个com.a.a.a.class的类冲突了。捣腾半天无法解决,各种冲突法子都尝试过。本身想让这两个广告商其中一个改一下jar包,最终通过高人指点去改hmsdk.aar里面冲突的包名,在此记录。

如若是jar和jar的冲突可忽略步骤1,步骤3

步骤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,下载地址

解决jar包冲突的工具类jarjar-1.4.rar-Android文档类资源-CSDN下载

(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.txt 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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐