一句话解决方案
如果出现了XXX.kt Redeclaration
,但尝试了其他方案都没有用的话,可以检查Flutter项目是否使用了神策的全埋点,本地Flutter环境是否集成了神策插件,如果没有,则按照神策Flutter全埋点文档集成,如果是神策引起的问题,则此时便可得到解决。
update 20230404
MacOS使用者注意:
java可能会使用/usr/libexec/java_home -V
对应的目录(一般是这会将 JAVA_HOME 设置为 /Users/username/Library/Java/JavaVirtualMachines/
目录)下的最新的 Java 版本作为java版本,所以如果后续在这里下载了最新的jdk,也可能导致此问题重现。
此时注意需要将JAVA_HOME设置为符合Flutter要求的java版本(比如11)。或者直接删除新的java版本。
背景
在新电脑上面执行之前的Flutter项目时,只是将源码下载下来直接执行,结果反复切换了Flutter/Kotlin/AS/IDEA/VS Code等等,当编译最后时,总会出现XXX.kt: Redeclaration XXX
错误,而且报错的是Flutter项目中Android Moudle中的所有Kotlin文件(包括Application、Activity等)。
在尝试了Kotlin file changes result in Redeclaration error上面的各种方式之后也依旧会出现。
虽然同样的代码在之前的电脑上是OK的,但是病急乱投医,依旧试了各种诸如切换编译器、Java、Kotlin、Gradle等各种方式,但是均于事无补。
期间虽然也有考虑到可能时神策导致的,但是可能时因为使用了FVM的缘故,神策集成可能未成功,而导致问题依旧存在,再加上XXX.kt Redeclaration
看起来好像时Kotlin插件的问题,而我本地的Gradle使用--stacktrace --scan --debug
等参数都没有输出有用的信息,导致我浪费了大约好几个小时在此问题上。
最后解决此问题也是上述各种折腾无效之后,才再次一项一项和之前的项目对比环境条目,重新使用相同的Flutter,重新集成了一次神策才解决了此问题。
出现这个问题的原因很愚蠢,解决问题的过程中的教训需要铭记。