Apk仅在调试模式下运行。 Apk以Eclipse中的“Run”开始在断点处停止

时间:2011-07-28 18:17:34

标签: android debugging release

我注意到之前已经提到过,但我还没有找到答案。这个问题的主要症状是当apk被部署为“Run”时,Eclipse会在断点处停止

到目前为止,我已经完成了这些操作,并且没有一个从Project shell生成正确运行的“Run”构建 - >运行方式 - > 1. Android应用程序

•断开连接,卸载并重新安装apk无法解决问题(这是平板电脑设备,而不是模拟器。) •使用文件系统制作所有项目和库项目 •全新的项目正常工作,例如它们不会在与问题项目相同的Eclipse工作空间中的“运行”模式下停在断点上 •窗口 - >偏好 - >运行/调试(扩展) - >启动“当工作空间包含断点时以调试模式启动”设​​置为永不
•封闭和打开的Eclipse
•在该透视图中的“调试”选项卡下杀死所有正在运行的进程 •通过删除主项目库和库项目依赖项的res和gen文件夹,在Eclipse IDE中手动清理整个工作区 •检查项目构建文件中是否出现“debug”一词 •使用以下命令从命令行清除构建项目:ant clean then ant release

有趣的是,当我从命令行清理构建然后全新安装新的apk时,如果Eclipse打开,调试器将附加到正在运行的进程并在第一个断点处停止!如果Eclipse关闭,程序将使用标准的“Waiting for Debugger”对话框等待调试器。

因此,构建过程中的某些内容(尚未弄清楚所有文件涉及的内容)和/或.metadata中的某些内容和/或某些依赖性。

修改 我在:

找到了一个文件
C:\Projects\Mobile\Android\.metadata\.plugins\org.eclipse.debug.core\.launches\MyProjectName.launch
xml中的

<launchConfiguration type="com.android.ide.eclipse.adt.debug.LaunchConfigType">

不知道这是否是一个线索,但如果我删除该文件,Eclipse将只用它替换它。

编辑

*确认项目在构建并从另一台机器运行时运行正常,所以我怀疑这是我的工作机器的Eclipse工作区导致了这个问题。也许我需要抛弃所有工作区的元数据并重新开始。

8 个答案:

答案 0 :(得分:13)

我遇到了同样的问题。解决方案是,重新启动您的设备。祝你好运。

答案 1 :(得分:2)

你说你有断点吗?

尝试:

Window -> Preferences -> Run/Debug(expand) -> Launching

当工作空间包含断点时,应该有一个名为“在调试模式下启动”的部分“

如果不是“从不”那将是你的问题。

答案 2 :(得分:2)

我有同样的问题,我需要4个步骤来解决它们:

  1. 断开设备
  2. 重新启动设备
  3. 清理并构建工作区中的所有项目。
  4. 在运行模式下在模拟器中启动应用并检查它是否正常。
  5. 在运行模式下启动设备中的应用程序,一切正常。
  6. 只有重启设备对我不起作用!

答案 3 :(得分:1)

更新

使用Intellij代替Eclipse进行Android开发(远少于IDE接口错误),然后完全忽略以下内容:

自原帖以来我发现的两条重要规则:

1)养成等待Eclipse完成的习惯构建工作区 - 默认情况下,指示器显示在Eclipse的左下角。在具有多个库的大型项目中,WS构建时间可能需要几分钟。在构建完成之前不要更改任何内容。

2)关闭工作区中的所有项目,并从没有lib依赖项的项目开始一次一个地重新打开它们,依此类推。确保不要打开项目,直到您可以验证工作区是否已完成构建已打开的项目。在开始下一个项目之前修复所有问题。

祝你好运。

答案 4 :(得分:1)

我遇到了同样的问题:我只能在调试模式下运行我的应用程序,但是当我按下“运行”按钮时它将无法正常启动。我在这里尝试了所有解决方案,但没有任何对我有用。

过了一段时间,我在我的活动开始时找到了android.os.Debug.waitForDebugger();。我希望这个答案有时会对某人有所帮助,因为当我寻求帮助时,这个问题首先出现在Google中。

答案 5 :(得分:0)

有时发生在我身上 - 你是否完全从手机上卸下了应用程序并尝试重新安装?你能安装apk然后断开手机与机器的连接吗? (如果你使用模拟器,obv将不起作用)

答案 6 :(得分:0)

在Samsung S4上遇到同样的问题,通过取消选中“Developer options”下的“Wait for debugger”选项来解决问题。

答案 7 :(得分:0)

如果出现同样的问题,请检查您的项目中是否有这行代码:

android.os.Debug.waitForDebugger();

它可能存在于服务中以进行调试,一旦您将其注释掉,它将在发布模式下工作。问题是这行代码等待调试器,如果你没有在调试模式下运行它将无限期地等待