在开发过程当中,常常会遇到多人、异地协同工做的模式。html
鉴于每一个人使用的Android Studio版本不一样、gradle环境的不一样,咱们可能会遇到打开别人的项目编译不过的问题。java
对于Android Studio的这个臭毛病,若是遇到了真的还挺烧脑。好比下面这种报错:android
> Task :app:compileROWDebugJavaWithJavac FAILED E:\Source\test\SetupWizardExt\app\src\main\java\com\test\setup\network\AccessPoint.java:20: 错误: Nullable在android.annotation中不是公共的; 没法从外部程序包中对其进行访问 import android.annotation.Nullable; ^ E:\Source\test\SetupWizardExt\app\src\main\java\com\test\wizardmanager\utils\WizardActionParser.java:3: 错误: NonNull在android.annotation中不是公共的; 没法从外部程序包中对其进行访问 import android.annotation.NonNull; ^ E:\Source\test\SetupWizardExt\app\src\main\java\com\test\wizardmanager\WizardManager.java:21: 错误: 找不到符号 import static android.content.Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT; ^ 符号: 静态 FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT 位置: 类 E:\Source\test\SetupWizardExt\app\src\main\java\com\test\setup\utils\GlobalConfigUtil.java:28: 错误: 找不到符号 import static android.app.ActivityManager.getCurrentUser; ^ 符号: 静态 getCurrentUser 位置: 类 E:\Source\test\SetupWizardExt\app\src\main\java\com\test\setup\LenovoGestureNavigationSettingsActivity.java:51: 错误: 找不到符号 import static android.os.UserHandle.USER_CURRENT; ^ 符号: 静态 USER_CURRENT 位置: 类 E:\Source\test\SetupWizardExt\app\src\main\java\com\test\setup\LenovoGestureNavigationSettingsActivity.java:50: 错误: 找不到符号 import static android.app.ActivityManager.getCurrentUser; ^ 符号: 静态 getCurrentUser 位置: 类 ...... E:\Source\test\SetupWizardExt\app\src\main\java\com\test\setup\network\WifiTracker.java:330: 错误: 找不到符号 Settings.Global.SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS, ^ 符号: 变量 SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS 位置: 类 Global E:\Source\test\SetupWizardExt\app\src\main\java\com\test\setup\network\WifiTracker.java:500: 错误: 找不到符号 !(config.selfAdded && config.numAssociation == 0)) { ^ 符号: 变量 selfAdded 位置: 类型为WifiConfiguration的变量 config 注: 某些输入文件使用或覆盖了已过期的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 从新编译。 注: 某些输入文件使用了未经检查或不安全的操做。 注: 有关详细信息, 请使用 -Xlint:unchecked 从新编译。 注: 某些消息已通过简化; 请使用 -Xdiags:verbose 从新编译以得到完整输出 100 个错误 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileROWDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 5s 45 actionable tasks: 8 executed, 37 up-to-date 16:03:06: Task execution finished 'assembleROW'.
上面所示的找不到符号的共有二十多个文件(中间以省略号代替),我试着找了几个,提到的变量或者方法在指定的类中都是存在的,很奇怪为啥AS睁眼说瞎话呢,随后我把个人解决过程附在下面:缓存
- 点Build-Clean Project试了没用。。。
- 点File-Invalidate Caches/Restart试了没用。。。
- 因而怀疑版本不对,询问了作这个项目的同事,对比了sdk,gradle配置等都同样。。。
- 而后怀疑与Android Studio一些设置有关。。。
- 经确认,没问题的版本是3.4.2,个人3.5的,别的同事的3.6等等版本的Android Studio都不能够,同样样的问题。而后我以为是高版本的不行,因而下载了3.4.2,唉,仍是不行。。。
- 最后没办法了,咨询了一个朋友,建议我清除AndroidStudio的缓存试试,我就清了一下,而后从新打开项目,居然编译经过了!
【缓存在C:\Users\主机名 找到 .AndroidStudiox.x(可能有多个版本的,至少要清了再也不使用的版本缓存)】安全
总结:经历一番鏖战(总计三天的时间,22333...),终于解决了,但愿这篇文章能给存在一样问题的你一个帮助,拿走不谢!!!app