IntelliJ IDEA - 无法构建任何东西,总是得到“包R不存在”

时间:2012-10-02 07:42:35

标签: android intellij-idea

我正在尝试使用IntelliJ IDEA与一位同事发誓的Android应用程序,但是我无法构建他发送给我的任何Android项目,因为无论何时我尝试构建我都会收到错误说package R does not exist

我一直在尝试我能想到的一切。示例和其他需要注意的事项是:

  • 确保我的local.properties文件版本指向Android SDKs文件夹的根目录。

  • 摆弄项目结构对话框中的各种设置(我不会全部列出)。

  • 我正在处理的项目有两个库项目,也使用R类,它们工作正常。

  • IDE中的intellisense识别R类并提出我期望的内容。

非常感谢任何帮助。我觉得我错过了一些基本的东西。

13 个答案:

答案 0 :(得分:34)

我是IntelliJ的品牌新手,所以如果这对您不起作用,我深表歉意。我遇到了同样的问题,解决方案是在项目中添加Android Facet

(我在Mac上,所以这里的指示可能略有偏差,有可能找到这个窗口的更好方法,如果有,请告诉我!)

  1. 右键单击您的项目并转到Open Module Settings(似乎F4也可以)
  2. 选择最左侧列中的Facets
  3. 点击+按钮
  4. 在您的项目中添加Android Facet,以及VOILA!
  5. 您可能需要立即导入R,这可能是一个巨大的痛苦...所以希望有人可以通过简单的方式自动导入
  6. 希望这有助于某人!

答案 1 :(得分:25)

此处列出的另一种可能的解决方案是检查AndroidManifest.xml中的软件包名称是否与实际软件包的名称相匹配:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.yourpackagename" >

我的包构建正常,直到我重构了包名,除了清单文件中的包名(见上文)之外,所有重构都被重构,导致错误“包R不存在”。

答案 2 :(得分:13)

如果您在需要“重建”之前使用已构建的包遇到此问题。 构建 - &gt;重建项目。删除gen不会这样做,因为IDEA将实际生成的R保存在其他地方。

答案 3 :(得分:5)

就我而言,我在另一个项目中添加了一些类,我必须从我的实际项目中将导入添加到R包中:

import com.youcompanyname.yourprojectname.R;

答案 4 :(得分:4)

我开始玩IntelliJ,因为我遇到了新Android Studio的问题,想尝试一些更稳定的东西(我之前从未真正使用过)。我最终得到了可怕的“包R不存在”错误。根据我的经验,这通常是在XML文件中搞砸了。对我来说,问题实际上是我为ActionBarSherlock创建的Android库模块的AndroidManifest.xml文件。无论出于何种原因,当它创建AndroidManifest.xml文件时,它并不打算使用ABS附带的AndroidManifest.xml文件,它将以下内容放在:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.ActionBarSherlockLibrary_4_3_1"
          android:versionCode="1"
          android:versionName="1.0">

    <application
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher">
        <activity
            android:name="ACTIVITY_ENTRY_NAME"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

当我创建此模块时,我选择了文件&gt;新模块...... 然后我在Android部分下选择了库模块,对于内容根我浏览了ABS文件的位置(其他字段自动填写正确,我没有更改它们)。 然后我点击完成,它提示我是否要保留本地文件或project.properties的内存文件。 我选择保留本地文件,之后没有提示我其他人。

我不知道为什么它搞砸了AndroidManifest.xml文件(也许我上面做的是错误的...... ???),但为了修复它我只是复制了我下载的原始AndroidManifest.xml库并替换了乱糟糟的AndroidManifest.xml文件。之后我做了Build&gt;重建项目并解决了“包R不存在”错误。

另一个想法是,@ xbakesx提到了Facets设置,对于您用作库的任何模块,您应该确保在该模块的Facets下选中“Library module”。我最初在试图弄清楚如何在IntelliJ / Android Studio中配置库时遇到了一些问题(我实际上只使用过Eclipse)。

答案 5 :(得分:4)

我刚刚重启IntelliJ,它神奇地解决了。 先试试吧。

答案 6 :(得分:3)

有同样的问题 - 问题是Manifest文件没有正确的默认Activity设置。

答案 7 :(得分:3)

对于那些已经达到这个目标的绝望的人们:我感受到了你的痛苦。我花了一个小时做了什么,除了尝试上面的所有这些以及其他来源的建议。我已经检查了所有xml资源两次,清理了缓存,重建了十几次,甚至重新启动了整台机器。这实际上对我有用:

在“构建变体”(左下角)下,我为目标选择了一个不同的构建变体(在我的情况下是发布而不是调试)缺少R问题。解决了它。

答案 8 :(得分:3)

重构了包名,并且intellij没有在清单中更新它。

因此,如果您重构了packagename,那么转到清单并更新xml文件根目录中的属性“package”并保存并重建它。如果发生任何错误,那么导入中的包名可能是错误的(至少这是我的情况)所以只需修复它们

希望这有助于任何人

答案 9 :(得分:2)

在我的情况下,我不得不删除intellij编译器缓存。在我的Windows机器上它是这样的:

%USERPROFILE%\.IdeaIC12\system\compile-server\<my project>

答案 10 :(得分:1)

尝试创建新项目,然后选择“从现有来源创建项目”

答案 11 :(得分:1)

加上我的0.02美元以防其他人遇到我的问题。在我的情况下,我使用IntelliJ生成了“Hello world”应用程序,忘了从“com.example”更改包名。然后我使用IntelliJ重构包名。这导致错误开始发生。

所以我对“com.example”进行了全局搜索,并在其他人提到的AndroidManifest文件中找到了它。但是,更改此问题并不能解决问题。 “com.example”也可以在“.idea”目录下的“workspace.xml”中找到。我改变了所有的事件,进行了重建,然后又重新开始工作了!

这似乎是IntelliJ中的一个错误。

答案 12 :(得分:1)

在Android Studio中,我的问题是当我复制粘贴一个类作为模板来创建另一个类似的类时,它要求自动导入一堆东西,其中大部分都不会与新类相关,所以我说取消。有了它它遗漏了import com.your.packagename.R;所以R实际上没有导入到我试图使用它的文件中。

单击R(可以用红色突出显示)时,可以使用alt-enter修复