JailedBird / ArouterKspCompiler

Arouter KSP annotation processor
Apache License 2.0
78 stars 8 forks source link

ksp 最新版本 #9

Closed EdwinSmartBoy closed 1 year ago

EdwinSmartBoy commented 1 year ago

ksp最新版本能用吗

JailedBird commented 1 year ago

项目中实际使用ksp插件为1.8.20(举个例子:id 'com.google.devtools.ksp' version '1.8.20-1.0.10' apply false) 使用的ArouterkspCompiler插件为1.7.20(举个例子:ArouterKspCompiler 1.7.20-1.0.4); 实际运行:他们应该是兼容的,但是我看每次ksp更新都修复不少bug,因此我才打了很多的版本,确保大家可以使用最新、最稳的ksp版本;

关于你的问题,我已经打了(kotlin1.9.10 & ksp1.9.10-1.0.13)的ArouterKspCompiler版本,请更新;

JailedBird commented 1 year ago

ksp最新版本能用吗

已更新kotlin1.9.10 & ksp1.9.10-1.0.13 最新版本,详情参见master分支README文件; image

image

EdwinSmartBoy commented 1 year ago

非常感谢🙏,明天试试

EdwinSmartBoy commented 1 year ago

没办法获取到Autowired的参数,需要什么特殊处理吗?我已经按照wiki的加入的

JailedBird commented 1 year ago

没办法获取到Autowired的参数,需要什么特殊处理吗?我已经按照wiki的加入的

举个例子?或者看下这个? https://github.com/JailedBird/ArouterKspCompiler/issues/4 参数传递、接收,和Arouter本身应该是一样的;

EdwinSmartBoy commented 1 year ago

类似这种,但是我的数据类型是String,是获取不到的

JailedBird commented 1 year ago

请参考项目中示例(临时添加代码,截图展示): image

image

image

另:是否忘记注入 ARouter.getInstance().inject(this) ? 此外:如还是存在问题,请查看ksp生成文件是否正确?

image

EdwinSmartBoy commented 1 year ago

辛苦大佬,我排查一下

JailedBird commented 1 year ago

我暂时关闭问题了哈,后面有问题可以继续在这反馈;

EdwinSmartBoy commented 1 year ago

好的

EdwinSmartBoy commented 1 year ago

排查了一下,确实发现有个问题 如果使用了lateinit var进行标识的属性,就没法获取,提示变量未初始化 去掉lateinit就能够获取到注入的字段 对应的ksp文件也是生成了的

JailedBird commented 1 year ago

晚点试试,看看为啥;

JailedBird commented 1 year ago

错误原因:getString提前获取lateinit的值,作为默认值; 复现场景:使用lateinit 初始化String,必现;其他类型不会出现问题;

@Autowired
lateinit var lateStr: String

image

解决方案:优化String初始化方式

image

缺陷: 1、 唯一缺陷:不能主动为String传递null值;但是应该不会有人这么用; 优点: 1、 绕开对String判断Java/Kotlin的可空、不可空,因为判断可能会很复杂,且不准;

JailedBird commented 1 year ago

麻烦先用这个验证一下: 最新代码已提交到main分支,先用这个验证下; com.github.JailedBird:ArouterKspCompiler:main-SNAPSHOT

EdwinSmartBoy commented 1 year ago

好的,麻烦您了

JailedBird commented 1 year ago

lateinit String bug已修复, xxx-1.0.5 已更新,参考README哈;

EdwinSmartBoy commented 1 year ago

好的,我试了com.github.JailedBird:ArouterKspCompiler:main-SNAPSHOT没啥问题,非常感谢!!