taboolib icon indicating copy to clipboard operation
taboolib copied to clipboard

关于依赖加载的几个Bug反馈和优化建议

Open EikoocS opened this issue 3 years ago • 2 comments

Bug:

  1. 如果动态加载的依赖 依赖于Kotlin 会出现 NoSuchMethodError 异常(Kotlin 重定向导致)
  2. #251
  3. 依赖加载异常后不会卸载插件,但后续的依赖注入会失效,导致逻辑失效

建议:

  1. 首次启动,下载并加载依赖时输出正在尝试加载的依赖(如果可用的话包含层级关系)如果加载的依赖树很庞大,定位加载失败的依赖很困难,在等待加载时也不知道是哪个在耗时间
  2. 支持处理 RuntimeDependencies 时自动处理 Kotlin 重定向
  3. 支持在元数据中定义全局 RuntimeDependencies 便于统一管理全局依赖
  4. 支持将指定依赖单独打包为libs.jar 构建时指定额外参数输出libs.jar 插件数据目录下存在 libs.jar 时自动加载;如果打包依赖在插件,每次构建时间会额外的长

EikoocS avatar May 06 '22 03:05 EikoocS

有意义但是也很有难度的建议,会有的。

如果动态加载的依赖 依赖于Kotlin 会出现 NoSuchMethodError 异常(Kotlin 重定向导致)

动态加载的依赖 依赖于Kotlin,需添加 relocate 属性来指向重定向后的 Kotlin 运行库。

依赖加载异常后不会卸载插件,但后续的依赖注入会失效,导致逻辑失效

目前没有有效的多平台实现来卸载插件,以后可能会尝试解决这类问题。

Bkm016 avatar May 06 '22 13:05 Bkm016

有意义但是也很有难度的建议,会有的。

如果动态加载的依赖 依赖于Kotlin 会出现 NoSuchMethodError 异常(Kotlin 重定向导致)

动态加载的依赖 依赖于Kotlin,需添加 relocate 属性来指向重定向后的 Kotlin 运行库。

依赖加载异常后不会卸载插件,但后续的依赖注入会失效,导致逻辑失效

目前没有有效的多平台实现来卸载插件,以后可能会尝试解决这类问题。

希望能将动态加载时重定向Kotlin运行库作为默认值,或是与gradle设置中是否重定向Kotlin挂钩 因为gradle设置中默认重定向Kotlin,而RuntimeDependency默认没有重定向 RuntimeDependency包含Kotlin时,在默认配置下无法工作

EikoocS avatar May 07 '22 00:05 EikoocS