【问题标题】:Issue with 'Hello Android' tutorial“Hello Android”教程的问题
【发布时间】:2010-05-04 06:58:46
【问题描述】:

我是 Eclipse 和 Android 的新手,但对 Java 有点熟悉。话虽如此,我尝试使用最新的 Eclipse (Galieo) 和 2.1 Android SDK 来遵循开发者网站上的“Hello Android”教程,我在运行 Snow Leopard (OS X 10.6) 的 Macintosh 上。我有一个默认的虚拟设备(虽然我的目标实际上是我自己的 HTC Incredible 之类的手机,它配备了 snapdragon 处理器,当然还有智能手机中的所有最新装备)。

在我转到RUN>RUN 然后选择“Android 应用程序”之前,一切似乎都很顺利。我的电脑转了一会儿,然后我看到两个错误。我在下面粘贴了 Eclipse 的输出:

[2010-05-04 01:53:46 - HelloAndroid] ------------------------------
[2010-05-04 01:53:46 - HelloAndroid] Android Launch!
[2010-05-04 01:53:46 - HelloAndroid] adb is running normally.
[2010-05-04 01:53:46 - HelloAndroid] Performing com.example.helloandroid.HelloAndroid activity launch
[2010-05-04 01:53:46 - HelloAndroid] Automatic Target Mode: launching new emulator with compatible AVD 'myAVD'
[2010-05-04 01:53:46 - HelloAndroid] Launching a new emulator with Virtual Device 'myAVD'
[2010-05-04 01:53:58 - HelloAndroid] New emulator found: emulator-5554
[2010-05-04 01:53:58 - HelloAndroid] Waiting for HOME ('android.process.acore') to be launched...
[2010-05-04 01:53:59 - Emulator] 2010-05-04 01:53:59.501 emulator[10398:903] Warning once: This application, or a library it uses, is using NSQuickDrawView, which has been deprecated. Apps should cease use of QuickDraw and move to Quartz.
[2010-05-04 01:54:23 - HelloAndroid] emulator-5554 disconnected! Cancelling 'com.example.helloandroid.HelloAndroid activity launch'!

我从来没有在模拟器中看到文本,并且模拟器崩溃并显示有关它意外退出的消息。

崩溃报告指出:

Process:         emulator [10472]
Path:            /Applications/android-sdk-mac_86/tools/emulator
Identifier:      emulator
Version:         ??? (???)
Code Type:       X86 (Native)
Parent Process:  eclipse [10468]

Date/Time:       2010-05-04 02:25:41.153 -0500
OS Version:      Mac OS X 10.6.3 (10D573)
Report Version:  6

Interval Since Last Report:          2558914 sec
Crashes Since Last Report:           4
Per-App Crashes Since Last Report:   2
Anonymous UUID:                      C5F178C1-5290-4CA9-AD6E-E9C4F5582754

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000001fd2f000
Crashed Thread:  3

注意:从命令行运行模拟器:

iainnitro-Mac:tools iainnitro$ ./emulator -avd myAVD

2010-05-04 02:49:23.011 emulator[10556:903] Warning once: This application, or a library it
uses, is using NSQuickDrawView, which has been deprecated. Apps should cease use of QuickDraw 
and move to Quartz.
Segmentation fault
iainnitro-Mac:tools iainnitro$

产生分段错误(如上面从终端输出中所述)。所以模拟器在显示任何东西之前就自己死了。

我已尝试重新启动 ADB 进程。

实际代码是教程中的一行一行代码,我还没有进入 XML 部分。

我不确定我的环境设置有什么问题,或者只是与 Snow Leopard 不兼容?我非常感谢任何帮助解决这个问题,因为我对在这个平台上开发非常感兴趣。

谢谢,

迈克·N·劳伦斯,堪萨斯州

【问题讨论】:

  • QuickDraw --> Quartz 警告就是这样;当我构建教程时,我也遇到了它,并认为它是我在使用模拟器时遇到的问题的原因——但我只是没有等待足够长的时间让模拟器启动。因此,如果您担心 Quartz,请不要担心。

标签: android eclipse


【解决方案1】:

没有直接经验,但这似乎是一个反复出现的问题:

This thread 建议:

您还没有让模拟器一直启动。启动它然后等到您看到桌面,就像在真正的手机上一样。

This one 提到(我怀疑第 1 点。不是你关心的问题):

  1. 获取更多 RAM。我在 256 MB 上运行(我相信这低于最低要求),今天刚刚升级到 1024 MB(很久以后),应用程序现在可以正常启动。虽然我仍然在模拟器中看到一些错误消息,但它们似乎并没有真正做任何事情。

  2. 从命令行安装。这有点费力,但是你可以从命令行启动一个模拟器(假设<android sdk path>\tools被添加到你的PATH变量中)只需输入模拟器,然后浏览到your_app_here.apk的位置,然后执行

    李>
adb install your_app_here.apk

如果您从 Eclipse 启动模拟器,请先执行 adb kill-service,然后执行 adb start-service(或 kill-server / start-server。不确定确切的命令)。然后您的应用程序将安装在模拟器上。


还有 (a bit old but might still be relevant)

也许模拟器运行得太慢了,adb 服务器或其他组件(如“DDMS”)有点“绝望”,因为它似乎在等待模拟器初始化一些 HOME 应用程序。
但是模拟器运行缓慢,Eclipse 中的控制台发送消息:emulator-5554 disconnected! Cancelling 'com.android.hello.HelloAndroid' launch!; 并且模拟器继续正常运行并启动它的系统,但不要运行我构建的应用程序。

所以对于那个问题我运行程序,当模拟器打开时,我在 DDMS Perspective 和设备选项卡中返回 Eclipse,在控制台向我显示消息之前按一个按钮“restart adb server”的“emulator-5554 disconnected!
我做了几次,直到模拟器最终启动操作系统。
在模拟器上启动操作系统后,eclipse 不会发送断开连接错误,而是“发送”我构建的应用程序,控制台也会显示有关此的消息。
然后终于在手机上出现了“Hello, Android”。

【讨论】:

  • 模拟器实际上在最后一个条目后自动死机,Android_ 屏幕就在上面。我会尝试 adb 的想法,看看是否有帮助,但可能需要更多内存......虽然我的机器确实有 2 GB - 它是一个月前的 Mac Mini :-)
  • 从命令行运行模拟器,但由于分段错误而死。
【解决方案2】:

对此进行了讨论,提出了两种解决方案 http://code.google.com/p/android/issues/detail?id=724

Comment 17 by zachrcrowe, Jan 06, 2010 仅供参考 - 我必须在 Hello Android 示例中更改一行才能阅读 this.setContentView(tv);为了让它工作。如上所述,弃用 警告不应影响模拟器的功能。

Comment 18 by mfrony, Jan 14, 2010 当我运行 Hello Android 示例时,我遇到了同样的问题。我解决它的方式和 可以运行我的第一个 Android 代码是将项目构建目标从 1.1 更改为 1.5。

【讨论】:

  • 我确信我的目标(主要是安装了 Android 2.1 的平台)没问题。当最后一行出现时,我仍然得到“模拟器意外退出”。将崩溃报告信息添加到原始问题。尝试 this.setTextView 建议。
【解决方案3】:

这似乎是一个时间问题。出于某种原因,Eclipse 试图在“准备好”之前将应用程序加载到模拟器上。我不确定为什么会发生这种情况,但我确实找到了解决方法:在运行应用程序之前从命令行启动模拟器。

  1. 通过关闭 Eclipse 开始清理(也许 OP 在尝试通过命令行运行之前没有退出 Eclipse?)
  2. 通过终端导航到 android-sdk-mac_86/tools 目录并键入以下内容来启动模拟器:

    ./emulator -avd my_avd

  3. 打开 Eclipse 并尝试使用与之前相同的步骤再次运行本教程

  4. 应该会打开一个对话框,询问您是要启动一个新的 AVD 还是使用已经在运行的 AVD——选择使用已经在运行的。

【讨论】:

    【解决方案4】:

    我所做的是将 AVD 启动时出现的圆圈移动到解锁位置,那里是“你好,Android”!

    【讨论】:

      【解决方案5】:

      当我尝试使用 4.0 AVD 运行模拟器时,我遇到了同样的问题。它曾经在启动屏幕上崩溃并在控制台中显示“分段错误”。我可以通过将 AVD 的 SD 卡大小从 32MB 增加到 1GB 来修复它。

      【讨论】:

        【解决方案6】:

        无论出于何种原因,我在添加时不再遇到分段错误:

        this.setContentView(tv);
        

        “this”似乎解决了这个问题。如果您尝试在没有我假设的任何 .apk 文件的情况下运行模拟器,则会发生段错误。 (我也是从命令行得到的)。希望教程能更新。

        【讨论】:

        • 什么是“电视”?它是未定义的。
        • @AmySukumunu 它是 Hello Android 教程中定义的 TextView。
        【解决方案7】:

        See Related post

        Another related post

        这对我来说适用于 Linux:

        • 运行模拟器(等待模拟器主屏幕加载)
        • 单击窗口 > 打开透视图 > DDMS
        • 在设备面板中,点击下拉菜单 > 重置 adb
        • 运行项目

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多