RePlugin icon indicating copy to clipboard operation
RePlugin copied to clipboard

引入第三方混淆jar中存在大小都存在的类,插件化处理后ClassNotFound

Open ashqal opened this issue 5 years ago • 3 comments

问题详细描述 Detailed description of the problem

引入混淆过的第三方jar,第三方jar中的类名大小都存在时,可能导致插件化处理后类丢失 例如三方jar中存在A.class, a.class,插件化方案可能对大小写不敏感,或者编译的操作系统对大小写不敏感,导致输出的apk丢失部分类,造成ClassNotFound

复现问题步骤 Steps to reproduce the problem

  1. 混淆开启R8混淆
  2. proguard配置-repackageclasses,此时输出的jar就大小写都存在了
  3. 将输出的jar引入工程中,使用插件化方案生成apk
  4. 运行时崩溃ClassNotFound

其它重要信息 Other important information

replugin-host-lib/gradle Version: ALL rePlugin-plugin-lib/gradle Version: ALL

Android API Version: Android 手机型号&ROM(Phone model & ROM): ALL

Logcat上下文 Logcat context

ashqal avatar Dec 19 '19 03:12 ashqal

jar重新打包后,class是存在的,只是在dex化后,dex里面class没有define。应该是Repackage后破坏了jar的混淆信息吧。

fantasy1722 avatar Dec 20 '19 06:12 fantasy1722

jar重新打包后,class是存在的,只是在dex化后,dex里面class没有define。应该是Repackage后破坏了jar的混淆信息吧。

repacket是指引入jar包就做好的事情,我怀疑是dex化时因为操作系统对大小写不敏感,A.class和a.class被合并成同一个class

ashqal avatar Dec 24 '19 01:12 ashqal

Gradle插件transform的时候有个解压缩操作,在mac这种大小写不敏感的系统上就会导致覆盖,所以一些类就确实了,解决方案就是不解压,直接数据流的方式处理

mowenGithub avatar Sep 08 '20 03:09 mowenGithub