Gradle增量Java构建失败,并显示“找不到符号错误”

时间:2019-06-12 09:43:13

标签: gradle android-gradle incremental-build

当我在Java文件中进行更改时,构建失败

Android Gradle插件:3.2.1 Gradle版本:4.6

请在下面找到错误的快照:

17:58:31.131 [ERROR] [system.err] symbol: class FragmentNavigationManager
17:58:31.132 [ERROR] [system.err] location: package com.microsoft.office.officemobile.FragmentManagerInfra
17:58:31.138 [ERROR] [system.err] D:\Office\dev\officemobile\android\Java\src\com\microsoft\office\officemobile\ActionsTab\ActionsAdapter.java:45: error: cannot find symbol
17:58:31.138 [ERROR] [system.err] import com.microsoft.office.officemobile.KaizalaPhoneauth.KaizalaPhoneAuthManager;

我检查了源代码中的FragmentNavigationManager.java文件中是否存在未定义的符号。

使用调试日志,我发现在进行Java构建之前,类文件FragmentNavigationManager.class已被删除

gradle: 17:58:28.630 [DEBUG] [org.gradle.api.internal.file.delete.Deleter] Deleting d:\office\build\droidarm\ship\officemobile\android\java\intermediates\javac\release\compileReleaseJavaWithJavac\classes\com\microsoft\office\officemobile\FragmentManagerInfra\FragmentNavigationManager.class

在删除上述类之后,在进行Java增量构建时,应将FragmentNavigationManager.java作为javac的输入传递,但是没有发生,这会导致未定义的符号问题。干净的构建工作正常

1 个答案:

答案 0 :(得分:0)

我发现了问题 源文件路径为:src \ com \ microsoft \ office \ officemobile fragmentmanagerinfra \ FragmentNavigationManager.java

生成的类文件:中间体\ javac \ release \ compileReleaseJavaWithJavac \ classes \ com \ microsoft \ office \ officemobile FragmentManagerInfra \ FragmentNavigationManager.class

在源路径和生成的类路径的目录名称中存在大小写不匹配的情况,这引起了问题。源路径具有fragmentnavigationmanager而不是FragmentNavigationManager

我发现程序包名称为:com.microsoft.office.officemobile.FragmentManagerInfra.FragmentNavigationManager。更改目录名称以与源路径中的程序包名称匹配可解决该问题

这是预料之中的吗,因为完整构建可以正常工作,而Gradle增量构建只会失败吗? 在Windows 10上工作