【问题标题】:Android - Eclipse not deploying new buildAndroid - Eclipse 未部署新版本
【发布时间】:2014-01-30 06:22:11
【问题描述】:

我遇到了这个问题,在 我对我的代码进行更改并运行项目之后,我总是在控制台中得到这个。

Application already deployed. No need to reinstall.
Starting activity authentication.LoginActivity on device nexus4testdev
ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myapp/authentication.LoginActivity }
ActivityManager: Warning: Activity not started, its current task has been brought to the front

以前它用于卸载旧应用并将新应用安装到设备上。现在它每次都会在控制台中抛出这个。

经过一番研究,我发现必须启用Java Builder 才能解决此问题。但是我首先禁用了Java Builder,因为我收到了The Type R is already defined 错误。一切都是突然开始的。现在,如果不从设备上手动卸载应用程序,我就无法部署我的应用程序,这非常令人头疼。任何帮助表示赞赏。

编辑:现在我看到 bin 文件夹并注意到 *.apk 从未构建。

【问题讨论】:

  • 您的错误Warning: Activity not started, its current task has been brought to the front 表明在您的模拟器中您的应用程序已经在运行并且您再次尝试运行它。首先关闭应用程序,然后再次尝试运行它。或者它可能在后台运行,因此首先从您的设置中强制关闭它,然后再次安装它,它应该可以工作。
  • 我认为您的新代码没有被构建,因为您禁用了 Java 构建器。你能告诉你为什么禁用它吗? R 的错误通常在您在项目中导入 android.R 时显示。
  • 它以前可以在不关闭应用程序的情况下工作。当我运行时,eclipse会进行卸载并重新安装。现在不行了。
  • @Swayam,我禁用了 Java Builder,因为在 gen 文件夹中,我得到的类型 R 已经为我正在使用的库之一定义错误。禁用 Java Builder 后,错误已解决,但 eclipse 不会创建新的构建。
  • @PsyGik 看看我的回答。无需为此禁用 java builder。

标签: java android eclipse


【解决方案1】:

您的错误Warning: Activity not started, its current task has been brought to the front 表明在您的模拟器中您的应用程序已经在运行并且您再次尝试运行它。

首先关闭应用程序,然后再次尝试运行它。或者它可能在后台运行,所以首先从您的设置中只需 forceclose 它然后再次安装它,它应该可以工作。

如果您在安装后对应用程序进行了任何更改,它将始终运行应用程序而不关闭。如果您不进行任何更改,然后尝试在不关闭它的情况下运行应用程序,在这种情况下它将显示此类错误。

一旦尝试清理并构建您的项目,然后再次运行它。

【讨论】:

  • 当然我修改了代码然后运行。请阅读我的问题的第一句话。
  • 您做了哪些更改,现在不允许您重新安装?您是否尝试过卸载旧的并重新安装?
  • 如果我从设备上手动卸载,那么它可以工作。但是eclipse不会自行卸载,这不是预期的行为。代码更改:我添加了几个新方法和变量。
  • 有时也会因为设备存储而发生。
  • 我使用的是 Nexus 4 16gig,免费提供 12gig。我怀疑这与存储有什么关系。
【解决方案2】:

对于某些类型的更改,Eclipse 不会重建 APK 文件。在这种情况下,您需要执行 Project -> Clean 以强制重建。

【讨论】:

  • 完成了,除非我从设备中手动卸载应用程序,否则它不起作用。 Eclipse 应该在我对代码进行更改后运行时进行卸载。这是预期的行为对吧?!
  • @PsyGik 你做了什么样的代码更改?你在改变 Java 代码吗?还是您要更改清单或资源文件?
  • Java 更改。我写了几个新的方法和变量。
  • @PsyGik 您是在 Eclipse 中进行更改还是使用了外部编辑器?你保存文件了吗?您是否在 Eclipse 中打开了多个项目?如果是这样,请仔细检查您是否正在运行进行更改的项目。如果这些问题看起来很基本,请原谅。我只是想想想你可能会看到这种行为的所有原因。
  • 是的,我做了所有这些。不管是基础的还是高级的。我们是开发人员,我们也应该经常检查基础知识,因为这是我们总是忽略的。如果有帮助,那是导致 Type R 错误的 actionbar-pull-to-refresh 库,为此我禁用了 Java Builder。
【解决方案3】:

通常我所做的不是清理我的构建,而是强制进行更改。我采用任何 java 类,添加一个空格,删除它,然后保存。这会诱使 Eclipse 为您重新编译代码,这将允许您将新软件上传到设备。

【讨论】:

  • 这正是我一直在做的事情,但在这种情况下,它不会构建 *.apk。
【解决方案4】:

Eclipse 在再次部署之前不会卸载任何现有的同名应用程序。即使您更改了代码,然后清理/编译,然后部署到您的设备或模拟器,也不能保证所有内容都从设备中消失。

如果您自上次卸载后创建了任何文件,例如 SharedPreferences 或 SQLite 数据库,则尤其如此。

这就是为什么我总是打开终端窗口:

adb uninstall my.app.name

映射到名为“u”的别名。我可以快速卸载它然后重新部署。这可以自动化,这里有一篇关于如何做到这一点的精彩文章:

Uninstall Android App Before Each Debug

祝你好运。

【讨论】:

  • 我不同意您的观点,即 Eclipse 不会卸载。当我在更改代码后重新部署时,它会卸载应用程序。它总是有,但是是的,SharedPreferences 和 SQLite DB 中的数据没有被擦除,我也不需要清理这些数据。你手动卸载的建议很好,但我的问题是,如果设备上存在 *.apk,eclipse 不会构建它。这不是预期的行为,因为 Eclipse 应该自行执行卸载和重新安装。
  • Eclipse 不会卸载应用程序。卸载一词只有一个定义,我的意思是从文件系统中删除应用程序及其所有工件。 Eclipse 不这样做。它将您的应用程序安装到已安装的相同位置,覆盖该过程中的所有文件。但是留下的东西,例如 SharedPreferences 和数据库,不会被删除。 Eclipse 不会在部署之间运行“adb uninstall appname”。
  • 从这个意义上说你是对的。但在我的情况下,除非我从设备中手动卸载应用程序,否则 eclipse 在我运行项目时不会安装应用程序。我测试了一个不同的项目,那个项目运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
相关资源
最近更新 更多