Android Studio 打開已有項目,編譯出錯,提示「錯誤: 找不到符號」的解決方法

在開發過程當中,常常會遇到多人、異地協同工做的模式。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

相關文章
相關標籤/搜索