当我在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文件中是否存在 undefined symbol 。
使用调试日志,我发现在进行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的输入,但这种情况没有发生,这会导致 undefined symbol 问题。清洁构建工作正常
最佳答案
我发现了问题
源文件路径为:src \ com \ microsoft \ office \ officemobilefragmentmanagerinfra \ FragmentNavigationManager.java
生成的类文件:中间体\ javac \ release \ compileReleaseJavaWithJavac \ classes \ com \ microsoft \ office \ officemobileFragmentManagerInfra \ FragmentNavigationManager.class
在源路径和生成的类路径的目录名称中存在大小写不匹配的情况,这是导致此问题的原因。源路径具有fragmentnavigationmanager而不是FragmentNavigationManager
我发现程序包名称为:com.microsoft.office.officemobile.FragmentManagerInfra.FragmentNavigationManager。更改目录名称以与源路径中的软件包名称匹配可解决该问题
这是可以预期的,因为完整构建可以正常工作,而Gradle增量构建只能失败吗?
在Windows 10上工作
关于gradle - Gradle增量Java构建因 “cannot find Symbol error”而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56559124/