2017-07-20 21 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”选项),并且自动编辑弄乱了我们复杂的配置。或者之前的一位开发者将它留在那里我似乎无法在一个干净的项目上重现它。