kezong / fat-aar-android

A gradle plugin that merge dependencies into the final aar file works with AGP 3.+
MIT License
3.08k stars 607 forks source link

[BUG]合并打包第三方aar后,缺失了部分类 #384

Open zhongqingsong opened 2 years ago

zhongqingsong commented 2 years ago

Describe the issue 我打包了vivo的一个SDK,里面有个 C.class,这个在vivo的aar中是存在的。但是,我打包合并后,其他所有类都在,就唯独缺少了这个C.class,运行起来就直接报错了。 这个情形,我猜测是存在了同名的小写类名,导致大写的类名被丢弃了?我这边就是简单的embed了,没有其他的任何操作;或者这是一个特殊的参数,我没有设置对,要是这样的话,能点明下嘛,感谢。

Build Environment

完整描述 第一张图,是vivo的官方aar,里面存在C类。后面的图,是合并打包后的fat-aar。除了这个C类,其他的都存在。这个类缺失后,运行起来就崩溃了。 image image image

waryard commented 2 years ago

同样遇到这个问题了,同样的vivo,求解决

waryard commented 2 years ago

Describe the issue 我打包了vivo的一个SDK,里面有个 C.class,这个在vivo的aar中是存在的。但是,我打包合并后,其他所有类都在,就唯独缺少了这个C.class,运行起来就直接报错了。 这个情形,我猜测是存在了同名的小写类名,导致大写的类名被丢弃了?我这边就是简单的embed了,没有其他的任何操作;或者这是一个特殊的参数,我没有设置对,要是这样的话,能点明下嘛,感谢。

Build Environment

  • Operating System: win10
  • Gradle Plugin Version: 4.2.2
  • Gradle Version: 6.7.1
  • Fat-aar Version: 1.3.8

完整描述 第一张图,是vivo的官方aar,里面存在C类。后面的图,是合并打包后的fat-aar。除了这个C类,其他的都存在。这个类缺失后,运行起来就崩溃了。 image image image

朋友,我找到解决办法了。你找一个可以区分大小写的盘符重新打包就行。希望可以帮到你

fredhurui commented 6 months ago

Describe the issue 我打包了vivo的一个SDK,里面有个 C.class,这个在vivo的aar中是存在的。但是,我打包合并后,其他所有类都在,就唯独缺少了这个C.class,运行起来就直接报错了。 这个情形,我猜测是存在了同名的小写类名,导致大写的类名被丢弃了?我这边就是简单的embed了,没有其他的任何操作;或者这是一个特殊的参数,我没有设置对,要是这样的话,能点明下嘛,感谢。 Build Environment

  • Operating System: win10
  • Gradle Plugin Version: 4.2.2
  • Gradle Version: 6.7.1
  • Fat-aar Version: 1.3.8

完整描述 第一张图,是vivo的官方aar,里面存在C类。后面的图,是合并打包后的fat-aar。除了这个C类,其他的都存在。这个类缺失后,运行起来就崩溃了。 image image image

朋友,我找到解决办法了。你找一个可以区分大小写的盘符重新打包就行。希望可以帮到你

请问具体怎么操作啊?是在Windows上还是Linux上,您所说的可以区分大小写的盘符具体是一个什么格式的磁盘?NTFS, FAT?能详细说明一下吗?谢谢

fredhurui commented 6 months ago

Describe the issue 我打包了vivo的一个SDK,里面有个 C.class,这个在vivo的aar中是存在的。但是,我打包合并后,其他所有类都在,就唯独缺少了这个C.class,运行起来就直接报错了。 这个情形,我猜测是存在了同名的小写类名,导致大写的类名被丢弃了?我这边就是简单的embed了,没有其他的任何操作;或者这是一个特殊的参数,我没有设置对,要是这样的话,能点明下嘛,感谢。 Build Environment

  • Operating System: win10
  • Gradle Plugin Version: 4.2.2
  • Gradle Version: 6.7.1
  • Fat-aar Version: 1.3.8

完整描述 第一张图,是vivo的官方aar,里面存在C类。后面的图,是合并打包后的fat-aar。除了这个C类,其他的都存在。这个类缺失后,运行起来就崩溃了。 image image image

朋友,我找到解决办法了。你找一个可以区分大小写的盘符重新打包就行。希望可以帮到你

请问具体怎么操作啊?是在Windows上还是Linux上,您所说的可以区分大小写的盘符具体是一个什么格式的磁盘?NTFS, FAT?能详细说明一下吗?谢谢

找到解决方案了: 我再win 10上参考:https://www.tenforums.com/tutorials/111293-enable-disable-case-sensitive-attribute-folders-windows-10-a.html 比如:fsutil file setCaseSensitiveInfo . enable 这样就可以让当前目录区分大小写了 需要注意的是:1.这个命令设置后对新创建的子目录具有传递性;2.这个命令设置后对已经存在的子目录没有传递性,需要对已存在的子目录进行设置

gudd1991116 commented 5 months ago

我在mac上也找到方案了,在启动台>磁盘工具中,新增“卷宗”,点击“+”号,给新卷宗命名,然后格式选择“APFS(区分大小写)”点击添加就行了。然后把项目放到/Volumes/新卷宗 内,使用开发工具重新打开该项目,在该目录上编译打包AAR。

zhongqingsong commented 5 months ago

提醒,这个setCaseSensitiveInfo 开启后,肉眼可见的电脑性能下降很多。如果有可能的话,还是配一台Linux的电脑吧。