【问题标题】:Prevent Android device rebooting when app is re/uninstalled重新/卸载应用程序时防止 Android 设备重启
【发布时间】:2012-05-04 01:18:52
【问题描述】:

我正在 HTC 平板电脑上调试 Android 应用程序,每次我卸载该应用程序时,设备都会重新启动。卸载也是尝试新版本的一部分,因此对应用程序的任何更改都需要在测试前重新启动。可以预见,这会加剧发展。

这个问题听起来与that described here 相似,只是在我的情况下它并不神秘。卸载 => 重新启动。通过 Eclipse & adb => 重新启动更改应用程序和调试。按照对类似问题的唯一答案中的建议擦除设备上的所有数据是不可取的,特别是因为没有太多迹象表明即使是该海报也没有将其视为等同于牺牲鸡的技术。

谁能告诉我为什么会发生这种情况以及如何预防?

【问题讨论】:

  • 如果您以不同的方式卸载它会有所不同吗?即 ADB 或在设备上手动
  • 不。通过拖动到垃圾箱和adb uninstall <app tag> 手动卸载都会导致重新启动。
  • 它是什么设备?当您卸载其他程序时它是否也会重新启动?还是只是你正在研究的那个?
  • 这是一台运行 Android 3.2.1 的 HTC Flyer P510e。我测试过的其他应用无需重启即可卸载。
  • 首先这不是你的错,但通过详细了解你可能会找到解决方法。该应用程序执行哪些类型的操作?出版了吗?你能制作一个仍然崩溃的最小版本来发布吗?如果您在没有运行的情况下安装和卸载它会崩溃吗?设备是否库存,没有模组/生根?

标签: android eclipse adb


【解决方案1】:

我没有提供这个作为答案(至少现在还没有),但需要比评论提供更多的空间来集思广益如何调查这个问题

我很想采用一个安全的“hello world”类型的应用程序并将其作为自己的活动合并到项目中。然后从 manifest 和 java 文件中注释掉所有真正的功能。那应该只留下你好世界和资源。查看设备是否在运行后卸载该设备后仍然存在 - 如果没有,猜测您可能不得不怀疑资源。

这应该做评论 - 或者你可以从树中批量删除文件

find  . -name "*.java" | xargs -I f sed -i 's/^/\/\//' f

(有些编辑器会阻止注释/取消注释,emacs 会对文件的列进行任意操作。)

然后我要么取消注释实际活动的骨架 - 即所有 onCreate、onStart 等方法,其中没有任何操作,然后将该活动恢复到清单。否则我会恢复功能性 Java 代码,但将活动排除在清单之外。然后,您可以逐步添加越来越多的功能,直到出现崩溃。

如果你有任何 ndk 库甚至 java 库,你可以用它们玩类似的游戏。

您也可以尝试在卸载过程中运行 logcat,看看在设备挂断之前是否有任何消息。

哦 - 还有一个主要问题,这是内核重启还是 android 运行时重启?在后一种情况下,adb & logcat 应该可以存活,并且 /proc/uptime 不会被重置为小数字。

如果您将其归结为可疑操作,那么如果您能发布对此的描述,那就太好了 - 我的测试集合中有一个类似的设备,并且很想知道它是否有相同的明显错误。 HTC 也有许多“开发者布道者”,他们可能是联系人。

【讨论】:

  • 感谢您的帮助!更改的主要测试将不得不等到下周,但我会在获得任何新信息后进行更新。
  • 你修复了探针吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2015-05-01
  • 2012-12-12
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 2013-06-15
相关资源
最近更新 更多