检测到android已经通过adb启动



我正试图通过adb检测模拟android操作系统(谷歌的android Emulator,sys版本12.0,在Docker内的Linux上运行(的成功启动,以便在启动后立即安装应用程序。我尝试了这个线程中提到的方法,但似乎都不起作用。我试着在一个循环中检查所有这些道具:

  • sys.boot_completed
  • dev.bootcomplete
  • init.svc.bootanim
  • 服务.bootanim.exit

即使在设备完全启动后,它们仍会继续返回0,并且永远不会返回1。

我也尝试了adb wait-for-device,但它立即完成,尽管我正在使用"-延迟adb";标志(如果我不使用它,行为仍然是一样的(。在引导完成之前(等待设备退出之后(尝试安装APK会导致安装错误:

adb: failed to install app.apk: Exception occurred while executing 'install': java.lang.NullPointerException: Attempt to invoke virtual method 'void android.content.pm.PackageManagerInternal.freeStorage(..) on a null object reference'

它是我等待设备启动,然后手动触发安装,或者如果我在尝试安装之前添加了足够长的等待时间,它可以正常工作。但我不想增加任意长时间的睡眠,因为这可能在不同的设备上运行,这些设备需要不同的启动时间。

有人遇到这种行为吗?关于如何在不必使用BOOT_COMPLETE侦听器编写自己的应用程序的情况下检测引导,你有什么建议吗?更抽象地说,有人对如何在启动后立即在Android模拟器中安装应用程序有不同的建议吗?

这是一个非常糟糕的解决方案,但您总是可以尝试在一个有一些小延迟的循环中安装应用程序,然后等待它成功。它不漂亮,但应该能胜任。

你说,当你试图在引导过程中安装应用程序时,会收到一个特定的异常。假设同样的异常不太可能在启动手机后由于某种不相关的原因发生,那么它应该是最安全的使用方法。

我脑海中浮现的另一件事是查看网络流量,我希望安卓系统在启动系统后立即打电话回家,但这似乎比"网络流量"更复杂,甚至可能更不可靠;"循环安装";主意

最新更新