在 Android Studio 中,默认将所有的构建和运行任务都委托给了 Gradle,尤其是 Arctic Fox | 2020.3.1 版本之后,IDE 默认处于“全委托模式”。如果仍然尝试运行 main() 函数,就会出现函数找不到的报错,信息如下:
1 | A problem occurred configuring project ':BASE'. |
其实,这并不是 Android Studio 的 Bug,而是其构建系统(Gradle)的默认机制在“作祟”。
1、失败原因
Google 的初衷是希望 Android Studio 成为一个纯粹的 Android 工具。因为 Android 项目的 Gradle 环境是为 Android 系统设计的,中间会涉及到 AAR、Manifest 合并、资源处理等。当你试图运行一个孤立的 main() 函数时,Gradle 找不到对应的 Task 来处理这个普通的 JVM 入口,导致“运行失败”。
2、解决方案
方案 1:单元测试
如果你经常需要运行 main() 函数来测试逻辑,可以直接在 src/test/java 下写 JUnit 测试 ,这样运行不需要任何配置:
1 | class ExampleUnitTest { |
方案 2:修改配置
如果你希望不改变代码结构,直接运行当前类,可以修改 .idea/gradle.xml 文件,在 <GradleProjectSettings> 标签下增加一行配置:
1 | <option name="delegatedBuild" value="false" /> |
✦ 原理:这行配置强制关闭了“构建委托”。当你点击运行时,Android Studio 不再求助于 Gradle,而是直接调用内置的 IntelliJ IDEA 构建器。