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