Kotlin文件无法使用R.java

时间:2017-11-21 17:53:40

标签: android android-studio kotlin build.gradle kotlin-interop

我在相应的资源文件夹中创建了一个新的布局文件。同步后,当我尝试引用布局文件,即R.layout.activity_test时,R是一个"未解析的符号"。当我尝试在AS中构建时,它失败了。

有趣的是,如果我手动导入R文件并在代码中使用它,当我尝试在命令行上构建时,它可以工作。另一件事是当我尝试在Java文件中使用R访问布局文件时,这也有效。所以我知道正在生成R.java。

我尝试创建一个全新的项目,R可以在Kotlin文件中访问。

这里有什么问题?

我尝试过的事情:

  • 清理后再建立

  • 无效的缓存/重新启动

  • 吹掉.gradle文件夹并重新创建索引

其他信息:

  • AS v3.0.1

  • 尝试过Kotlin v1.1.2-4和v1.1.60

  • Gradle v4.2.1

  • Gradle Plugin v3.0.0

3 个答案:

答案 0 :(得分:1)

使缓存无效/重新启动对我有用。

Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
C:/Users/R3ZA/.gradle/caches/modules-2/files-2.1/me.eugeniomarletti.kotlin.metadata/kotlin-compiler-lite/1.0.3-k-1.2.40/a16e967c276379eaf6e1fa03af77664f003db947/kotlin-compiler-lite-1.0.3-k-1.2.40.jar (version 1.2)
C:/Users/R3ZA/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.20/eb2a232734e09fcd1b958a5c7520a93c6de38b32/kotlin-stdlib-1.3.20.jar (version 1.3)
C:/Users/R3ZA/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.20/7d7934e26ce34da1a0a8d00e38038d7cf3375e89/kotlin-stdlib-common-1.3.20.jar (version 1.3)

答案 1 :(得分:0)

在应用程序模块的 android 部分下添加以下内容:

android {
  ...
  sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
  }
}
  

这使Android Studio知道kotlin目录是源   根目录,因此将项目模型加载到IDE中时   正确识别。或者,您可以将Kotlin类放在   Java源目录,通常位于src/main/java中。


https://kotlinlang.org/docs/reference/using-gradle.html#android-studio

答案 2 :(得分:0)

如果您的项目中有警告,请修复它。 就我而言,我的Gradle版本有版本编译警告。 该应用程序运行良好,但未识别R类,因此我更改了gradle版本并修复了警告,并且一切正常。