gpt4 book ai didi

android-studio - 堆栈溢出错误 : null in Android Studio on Project Structure

转载 作者:行者123 更新时间:2023-12-03 17:23:32 27 4
gpt4 key购买 nike

自从我更新到 Android Studio 2.3,在某些情况下会出现 IDE 错误:例如当我点击 File->Project Structure 时,尝试打开任何布局 XML,甚至点击任何指向任何 build.gradle 文件的代码(这些文件至少无一异常(exception)地打开)。错误显示 StackOverflowError: 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)

...最后两行永远重复。

我该怎么做才能找到这个问题的根源?

看起来我的构建配置或 Studio 内部某处有循环引用?但我无法用手找到任何东西。如果我至少知道堆栈跟踪中提到的模式或引用是什么,那将会很有帮助。

我已经尝试过的事情:

  • 使缓存无效并重新启动
  • 删除项目目录下的.idea/等临时文件夹
  • 将项目 checkout 到新位置
  • settings->build->gradle->experimental中开启“new Project Structure dialog”——然后对话框就可以了,但是关闭还是出现同样的错误,其他情况依旧不工作

我使用的是 Android Studio 2.3.3,所有插件和 android 库都已更新,gradle 3.3 和 gradle 插件 2.3.1;所有这些都在最新的 gentoo linux 上。

最佳答案

我已经解决了这个问题。在我的主要 build.gradle 中有这 3 行:

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

在这个项目中,*Version 变量在 gradle.properties 文件中分配,而不是在 build.gradle 文件中,所以它们是已在所有模块 gradle 文件中访问,并且上面的行创建了一个循环引用。 (我不是 gradle 专家,这只是一个猜测)

我认为它们是在某个时候由 Kotlin 插件添加的(“在项目中配置 Kotlin”选项),自动编辑搞砸了我们复杂的配置。或者一些以前的开发者把它留在那里。我似乎无法在干净的项目中重现它。

关于android-studio - 堆栈溢出错误 : null in Android Studio on Project Structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45209813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com