美文网首页JAR包
Android 解决 jar/aar 包类名冲突

Android 解决 jar/aar 包类名冲突

作者: 雁过留声_泪落无痕 | 来源:发表于2022-04-25 14:56 被阅读0次

    背景

    在某些极端场景下,需要接多个第三方 jar 包,但是 jar 包都是各家按自己的规则混淆过的,很容易就出现了两个 jar 包中都包含 a.a.a.a 这个类的(前面几个 a 是包名,最后一个 a 是类名)

    jar 包解决

    -injars 'classes.jar'
    -outjars 'classes-out.jar'
      
    -dontskipnonpubliclibraryclassmembers
    -dontshrink
    -dontoptimize
    -dontusemixedcaseclassnames
    # 在这里指定要转换成的包名
    -repackageclasses com.xxx
    -dontpreverify
    -dontnote
    -dontwarn
    -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
    
    # 需要注意观察原始 jar 包中哪些是没有混淆的,需要保留
    -keep class com.cmri.** {*;}
    # 因为我们的目的只是替换外层包名,类内部的一些东西都不用管
    -keepclassmembers class ** {*;}
    
    • 执行如下命令:
    cd E:\Program Files\proguard-7.2.1\bin
    proguard.bat @C:\Users\xiaobo\Desktop\convert.txt
    
    • 结果如图:


      转换前
    转换后

    aar 解决

    • 将 aar 拖到 7zFM.exe 图标上,用 7zip 打开
    • 把 classes.jar 提取出来
    • 按照上面 jar 包的形式进行处理 classes.jar
    • 在 7zFM 中删除原来的 classes.jar 并将新的 classes.jar 拖进去
    • 得到新的 aar

    相关文章

      网友评论

        本文标题:Android 解决 jar/aar 包类名冲突

        本文链接:https://www.haomeiwen.com/subject/lxbfyrtx.html