抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

Jetpack Compose For-loop range must have an ‘iterator()’ method

在了解了 compose 之后,决定自己撸一个九宫格尝试下绘制以及手势,于是这个过程中发现了一个有意思的事情。

先用 IDE 的新建 Empty Compose Activity 初始化了相关的 compose 环境以及库。然后写了行代码:

for (i in 0 until dotNum * dotNum)

就这么行代码,Windows 的 IDE 一直提示我:

For-loop range must have an 'iterator()' method

好在不影响运行也不影响调试,我在想 Mac 是否会存在同样的问题,回来后发现,Mac 并不会。我猜,这就是 Windows IDE 的 BUG 了,大概率与 kotlin 版本相关。

在观察了 build 日志后发现:

ComposeOptions.kotlinCompilerVersion is deprecated. Compose now uses the kotlin compiler defined in your buildscript

因为默认生成的那些 gradle 代码里有这么一个指定:

kotlinCompilerVersion '1.5.31'

所以我默认没去怀疑,甚至因为将其改为 1.6.0 后报错,我特意将版本降级与其一致,当我看到上面的 deprecated 后,我知道可以删除它并且将我的 kotlin 版本指定回 1.6.0 了,处理完同步 gradle 后,不会爆红了,正当我满心欢喜时。。。在编译前不报错,但是会在编译时报错!!!

目前的 compose 只适配到了 1.5.31,所以 1.6.0 的 kotlin 版本还是无法使用,于是经过多种尝试,写复杂逻辑时候把 kotlin 升到 1.6.0,run 的时候再改回去,平时一般的逻辑就直接无视 IDE 的爆红吧(虽然没有代码提示,写了这么多年,一般也不需要提示了吧)。

希望 Google 早点解决这个问题~

PS:在新版的 Android studio 大黄蜂 bate 4 已解决,北极狐不行。

以上。


本站由以下主机服务商提供服务支持:

0条评论

发表评论