【问题标题】:IntelliJ cannot resolve resources nor AndroidManifest.xml in SBT (multi)projectIntelliJ 无法解析 SBT(多)项目中的资源和 AndroidManifest.xml
【发布时间】:2016-04-09 23:35:00
【问题描述】:

自从我将 Android 项目从 Gradle 迁移到 SBT 后,我就无法有效地使用资源:

  • XML 资源中的每个符号(例如@string/app_name)都以红色突出显示并显示错误消息(例如Cannot resolve '@string/app_name' symbol),
  • 布局编辑器无法工作,因为布局中的所有变量都未解析,因此我无法有效地编辑它们,

还有更多 IDE 报告 AndroidManifest.xml 丢失,因此我无法从 IDE 中运行应用程序,因为我无法配置任何运行配置。清单和资源的自动重构,例如活动类名更改也失败。

但是,所有资源和清单都在它们的位置。如图所示,构面也设置正确:

我已经尝试过但没有奏效的方法

  • 编辑构面 - 均已正确设置,
  • 使缓存无效并重新启动 IntelliJ,
  • 删除 .idea 目录并使用 SBT 插件重新导入项目,
  • 像在 Gradle 中一样同步项目 - SBT 没有这样的选项,我能做的最好的就是刷新构建。

通常我会怀疑构建由于某种原因无法正常工作,但是:

  • sbt clean app/android:run 正确地从头开始构建应用程序并加载到模拟设备中,并按预期工作,
  • IDE 中的构面已正确设置,所有依赖项均已正确识别,项目已正确设置。

我可以尝试什么来诊断/解决问题?

【问题讨论】:

    标签: android intellij-idea sbt android-sdk-plugin


    【解决方案1】:

    在 IDE 中禁用源代码生成。

    来自 aar 的资源无法在本地 xml 资源中解析,这是目前 IDEA sbt 项目导入支持的限制

    【讨论】:

    • 不幸的是,它只修复了generating sources 消息。来自资源的符号(在同一个项目中)仍未解析,运行配置无法找到清单:i.imgur.com/pt3r6UR.png(在禁用源生成和重启后使源失效后的屏幕截图)。
    • 运行配置必须使用Make;它必须使用SBT;是的,IDEA 中的 XML 无法解析资源,这是一个已知问题。
    • 我能做到的最好的事情是运行app/android:run SBT 任务以从 IntelliJ 部署和启动应用程序。当我尝试配置 Android 应用程序 任务时,我仍然收到 AndroidManifest.xml doesn't exists or has incorrect root tag 消息 - 我可以将 Make 替换为像 android:package 这样的 SBT 任务并忽略错误消息 - 然后运行 ​​SBT,构建包,但应用程序未部署或启动(因此无法在 IDE 中进行调试)。此清单问题是否也属于不可解决的资源类别?
    • 您必须删除Make 任务,句号。部署是自动的,调试也是如此
    • 我做到了 (i.imgur.com/XEfMXU9.png)。如果忽略无效配置警告(并手动将 APK 路径设置为 SBT 生成的文件),则在 SBT 完成后我会收到 [app] Unable to obtain main package from manifest. 错误。
    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 2014-08-12
    • 2018-03-27
    • 1970-01-01
    • 2022-01-04
    • 2018-11-10
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多