错误: androidmanifest.xml文件丢失 --> 我缺少了什么?

21

您好,我完全是 Android 编程的新手,我要问的问题可能非常简单,但我不知道如何让它工作,请多多包涵。

我从Android 开发者网站安装了 android-sdk 和相关工具。我按照他们的指示创建了一个 HelloWorld 应用程序,但我遇到了一些我不理解的错误。

文件 MainActivity.java 是一个自动生成的文件,我在这个文件的这些地方不断收到错误提示:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main); // error in activity_main
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.activity_main, menu); // error in activity_main
   return true;
 }

于是我试图查看layout.class生成的类文件,发现那里没有名为activity_main的变量。

有人可以友善地建议在这里该怎么做吗?任何帮助将不胜感激。

目录结构向我展示了我确实拥有AndroidManifest.xml文件。

当我尝试运行应用程序时,会出现以下特定错误:

     AndroidManifest.xml file missing!
     Unknown Android Packaging Problem

当我尝试运行时,出现了一些错误:

        10-10 23:31:11.305: E/Trace(946): error opening trace file: No such file or directory (2)
        10-10 23:31:11.955: E/AndroidRuntime(946): FATAL EXCEPTION: main
        10-10 23:31:11.955: E/AndroidRuntime(946): android.content.res.Resources$NotFoundException: Resource ID #0x2
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.content.res.Resources.getValue(Resources.java:1013)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.content.res.Resources.loadXmlResourceParser(Resources.java:2098)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.content.res.Resources.getLayout(Resources.java:852)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.view.MenuInflater.inflate(MenuInflater.java:107)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at com.example.myfirstapp.MainActivity.onCreateOptionsMenu(MainActivity.java:18)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.app.Activity.onCreatePanelMenu(Activity.java:2476)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:393)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:747)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2913)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.os.Handler.handleCallback(Handler.java:615)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.os.Handler.dispatchMessage(Handler.java:92)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.os.Looper.loop(Looper.java:137)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at android.app.ActivityThread.main(ActivityThread.java:4745)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at java.lang.reflect.Method.invokeNative(Native Method)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at java.lang.reflect.Method.invoke(Method.java:511)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        10-10 23:31:11.955: E/AndroidRuntime(946):  at dalvik.system.NativeStart.main(Native Method)

4
你可能少了 AndroidManifest.xml 文件 :P - Raghav Sood
1
右键单击 > 删除。创建一个新的Android应用程序项目,并查看是否没有错误运行。 - baTimá
1
@sood:我已经有了XML文件并创建了一个Android项目。 - The Dark Knight
3
Eclipse出现了问题。我遇到了同样的错误。不得不再次进行清理和构建,然后才能正常工作... - Johan
我也遇到了同样的问题,尽管我的android manifest.xml文件明显存在。对我有效的方法似乎是关闭所有不需要的打开项目。真是奇怪。 :P !:^) - Sandi Laufenberg-Deku
显示剩余2条评论
6个回答

55

如Clayton所提到的,只需构建您的项目或清理它。

项目 > 全部构建

项目 > 清理

我认为这是因为您在gen文件夹中没有R.java文件。构建您的项目将在您的gen文件夹中生成R.java文件,错误应该会消失。

这是因为您正在使用以下代码引用您的布局文件。

setContentView(R.layout.activity_main); 

对于R.layout.activity_main的引用声明在R.java文件中,需要通过构建项目来生成该文件。


1
我是个蠢货,忘记构建了。现在我已经构建了它,缺失的 xml 错误消失了,但是关于 activity_main 的另外两个错误仍然存在。 - The Dark Knight
1
请检查您的 R.java 文件,看看是否有对 'R.layout.activity_main' 的引用。 - Susie
是的,它在这里。我在这里添加代码: public static final class layout { public static final int activity_main=0x7f030000; } public static final class menu { public static final int activity_main=0x7f060000; } - The Dark Knight
1
关闭自动构建并忘记手动构建可能会导致此问题。 - Jichao

38

项目 → 清理 对我来说起作用了。


有时候我们应该尝试简单明了的方法。 - user739711
除了简单明显的事情之外,还要确保在清理后进行构建,或者检查“自动构建”菜单项。 - Kristopher Johnson

2

- 首先,请确保您已经将Eclipse正确地与Android同步。

- 您是否在系统环境变量中添加了toolsplatform-tools文件夹路径。

- 希望您正在创建一个Android项目而不是Java项目。请查看Eclipse项目资源管理器中的项目文件夹,其中Android为A标志,Java为J标志。


已将文件夹添加到路径变量中。是的,我已经创建了Android项目。构建后,缺少的XML错误已经消失,但是仍然存在两个与activity_main相关的错误。 - The Dark Knight

1

对我有用的方法:

  • 取消勾选项目>自动构建
  • 关闭项目
  • 打开项目
  • 清理项目
  • 手动进行项目>构建项目,然后它就可以工作了。

最终我重新勾选了“自动构建”。

我不知道“自动构建”是怎么回事,当我导出我的Google Play游戏时(特别是当我使用外部库,比如AndEngine)也会给我带来一些问题。

为了解决这个问题,我做了类似的事情(取消勾选它,清理,手动构建)。


0
我曾遇到过类似的问题。但是这是由于 Eclipse 崩溃造成的。此后,AndroidManifest.xml 出现了两个交换文件,出现了相同的错误:“缺少 AndroidManifest.xml 文件!”
因此,我删除了交换文件(.swo, .swp)
:-)

0

这是构建问题。

在Eclipse中,转到菜单,选择项目>清理,然后选择项目>全部构建。

清理指令将删除所有构建配置并修复所有构建问题。


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