2017-07-20 52 views
1

從我更新到Android Studio 2.3後,在某些情況下會出現IDE錯誤:例如,當我單擊File->Project Structure時,嘗試打開任何佈局XML,甚至單擊任何點任何build.gradle文件的代碼(這些文件至少打開無例外)。錯誤說StackOverflowError: null,堆棧跟蹤是在所有情況下是相同的:StackOverflowError:項目結構上的Android Studio中的null

null 
java.lang.StackOverflowError 
    at java.util.regex.Pattern.sequence(Pattern.java:2079) 
    at java.util.regex.Pattern.expr(Pattern.java:1996) 
    at java.util.regex.Pattern.compile(Pattern.java:1696) 
    at java.util.regex.Pattern.<init>(Pattern.java:1351) 
    at java.util.regex.Pattern.compile(Pattern.java:1028) 
    at java.lang.String.replaceAll(String.java:2223) 
    at com.android.tools.idea.gradle.dsl.parser.settings.ProjectPropertiesDslElement.getStandardProjectKey(ProjectPropertiesDslElement.java:52) 
    at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveProjectReference(GradleDslExpression.java:191) 
    at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveReference(GradleDslExpression.java:92) 
    at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslReference.getValue(GradleDslReference.java:66) 
    at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveReference(GradleDslExpression.java:152) 
    at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslReference.getValue(GradleDslReference.java:66) 
    at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveReference(GradleDslExpression.java:152) 

...最後2行重複,直到永遠。

如何才能找到此問題的根源?

它看起來像我的構建配置中的循環引用,或工作室的內部?但我無法親自找到任何東西。如果我至少知道堆棧跟蹤中提到的模式或參考是有幫助的。

事情我已經嘗試過:

  • 無效緩存&重啓
  • 刪除項目目錄.idea/和其他臨時文件夾
  • 簽出項目到新位置
  • settings->build->gradle->experimental啓用「新的項目結構對話框「 - 然後對話框工作,但關閉它仍然會發生同樣的錯誤,其他情況下仍然不起作用

我使用Android Studio 2.3.3更新了所有插件和Android庫,gradle 3.3和gradle插件2.3.1;所有在最新的gentoo linux上。

回答

0

我解決了這個問題。有這些三線在我的主build.gradle

ext.kotlinVersion = kotlinVersion 
ext.supportLibVersion = supportLibVersion 
ext.playServicesVersion = playServicesVersion 

在這個項目中的*Version變量分配在gradle.properties文件,而不是在build.gradle文件,因此他們已經在所有模塊gradle這個文件訪問,上面的線創建一個循環引用。 (我不是gradle的專家,這只是一個猜測)

我認爲它們是由Kotlin插件在某些時候添加的(「在項目中配置Kotlin」選項),並且自動編輯弄亂了我們複雜的配置。或者之前的一位開發者將它留在那裏我似乎無法在一個乾淨的項目上重現它。