错误:当前项目不支持运行配置应用程序。无法获取应用程序ID。

21

每次我打开Android Studio中的项目时,都会出现这个错误:

Error: Run configuration app is not supported in the current project. Cannot obtain the application ID.
当我点击Sync project with Gradle Files后,同步完成后,这个错误消失了。然而,当我重新打开项目或重启Android Studio时,这个错误又出现了。 我知道Sync project with Gradle Files可以解决问题,但我不想每次打开我的项目都要这样做,我尝试过降级Android Studio,但似乎没有用。 我的环境:
  • Android Studio Dolphin | 2021.3.1
  • Gradle 7.5.1
  • Android Gradle Plugin 7.3.0
有趣的是,每次我启动Android Studio时,都会弹出一个IDE错误提示。
java.lang.IllegalStateException: Cannot find root module data: xxxx-xxxx
    at com.android.tools.idea.gradle.project.sync.idea.VariantSwitcher.getAndroidModules(VariantSwitcher.kt:248)
    at com.android.tools.idea.gradle.project.sync.idea.VariantSwitcher.getSelectedVariants(VariantSwitcher.kt:261)
    at com.android.tools.idea.gradle.project.sync.idea.VariantSwitcher.findAndSetupSelectedCachedVariantData(VariantSwitcher.kt:128)
    at com.android.tools.idea.gradle.project.AndroidGradleProjectStartupActivityKt.attachCachedModelsOrTriggerSync(AndroidGradleProjectStartupActivity.kt:198)
    at com.android.tools.idea.gradle.project.AndroidGradleProjectStartupActivityKt.access$attachCachedModelsOrTriggerSync(AndroidGradleProjectStartupActivity.kt:1)
    at com.android.tools.idea.gradle.project.AndroidGradleProjectStartupActivity.runActivity(AndroidGradleProjectStartupActivity.kt:105)
    at com.intellij.ide.startup.impl.StartupManagerImpl.runStartupActivity(StartupManagerImpl.kt:312)
    at com.intellij.ide.startup.impl.StartupManagerImpl.runActivityAndMeasureDuration(StartupManagerImpl.kt:293)
    at com.intellij.ide.startup.impl.StartupManagerImpl.runActivityAndMeasureDuration$default(StartupManagerImpl.kt:288)
    at com.intellij.ide.startup.impl.StartupManagerImpl$runPostStartupActivities$1$2.run(StartupManagerImpl.kt:256)
    at com.intellij.openapi.project.DumbServiceImpl.doRun(DumbServiceImpl.java:395)
    at com.intellij.openapi.project.DumbServiceImpl.updateFinished(DumbServiceImpl.java:387)
    at com.intellij.openapi.project.TrackedEdtActivityService$TrackedEdtActivity.run(TrackedEdtActivityService.java:66)
    at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
    at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:348)
    at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82)
    at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:131)
    at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:47)
    at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:187)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:891)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:760)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:492)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

我已经在settings.gradle文件中依赖了我自己写的另一个私有模块。

includeBuild('external/xxxx-xxxx') {
    name "xxxx-xxxx"
    dependencySubstitution {
        substitute module('com.xxxx.xxxx:xxxx:1.0.0') using project(':xxxx-xxxx')
    }
}
也许这是我的子模块的问题或者是Android Studio/Gradle的一个错误?其他项目没有这个问题。
3个回答

28
在我的情况下,清单文件中缺少包名(很奇怪,因为我刚刚创建了项目,它应该默认存在),但我添加了它,现在它可以正常工作了。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" package="com.example.name">

18

在我的情况下,以下步骤有助于解决问题:

  1. 关闭IntelliJ Idea项目(或Android Studio)
  2. 删除项目根目录中的.idea文件夹
  3. 打开项目目录,并重新初始化。

4
哦,哇,它能工作。真的能工作。我简直不敢相信,它居然能工作。 - Stanley Ko

1
对我来说问题是我选择了“发布”构建变体。
解决方法就是进入构建变体,选择“调试”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接