【问题标题】:How does installing an Android app from the market differ from sideloading via web download or adb?从市场上安装 Android 应用程序与通过 Web 下载或 adb 进行侧载有何不同?
【发布时间】:2011-08-09 20:12:47
【问题描述】:

我知道在有根手机上安装 Android 应用程序的四种方法:

  1. 通过 Android 市场安装
  2. 在“设置”->“应用程序”中启用“未知来源”并从网络下载 .apk
  3. 在 Settings->Applications->Development and adb install 中启用“USB 调试”
  4. 在 Settings->Applications->Development 和 adb push 到 /data/app 或 /system/app 中启用“USB 调试”

这些选项之间的主要区别是什么?如果我删除 Market/Vending 和 PackageInstaller 应用程序,我仍然可以从 adb 侧载吗?出于此问题的目的,假设我的手机上没有电子市场应用。

【问题讨论】:

  • 只有一件事:AFAIK 前 3 种方式也可以在非 root 设备中使用
  • 我发现选项 2 的一个很好的变体是将 apk 作为附件通过电子邮件发送到正在手机上检查的电子邮件地址,例如 gmail 帐户,许多 android 用户已经设置了.打开附件后,将提供安装应用程序的选项。您也不需要 root 手机来执行此操作。

标签: android adb


【解决方案1】:

安装的主要区别在于升级路径。市场安装的应用程序会在有更新时通知您(通过市场)。手动安装的应用程序 (2-4) 取决于应用程序通知您在任何给定应用程序中可能支持或不支持的应用程序,或者您始终可以手动检查应用程序的源以查看是否有可用的更新。我相信通过 adb push 安装的应用程序需要重新启动才能正确注册为已安装。

如果您决定删除 MarketUpdater.apk,我相信唯一的问题将是前面提到的以前市场安装的应用程序的自动更新通知。如果你想删除 Market App 本身,而不是更新程序,Vending.apk 就是你要找的。

我不会删除 PackageInstaller。无论安装方法如何,它都用于安装(和注册)应用程序。有一次,我不小心用不兼容的busybox替代品替换了PackageInstaller使用的命令行工具。当我尝试手动安装应用程序时,PackageInstaller 会出错。我修复了命令行工具程序,但关键是在手动安装期间使用了 PackageInstaller。

【讨论】:

  • 当您删除 PackageInstaller 时,您是如何尝试安装应用程序的? Web 下载、adb 推送、adb 安装?此外,我更新了问题以缩小范围并包括您的一些观点(更新、自动售货等)。
  • 我使用的是 adb install。然而,PackageInstaller 也(最终)用于“adb push”安装。 adb push 部分可以工作,但是当系统重新启动时,需要 PackageInstaller 来完成安装。这就是推送和安装之间的主要区别。 install 立即使用 PackageInstaller 注册应用程序,推送取决于 PackageInstaller 的重新启动以完成安装。如果您想同时推送一堆应用程序(例如从备份中恢复), push 很好,但如果您希望它们立即可访问,例如用于调试,则安装更好。
  • 有趣!再次感谢。如果您知道的话,我会对任何指向文档的指针感兴趣。
【解决方案2】:
  • 称为云到设备消息传递 (c2dm) 的 google 推送通知要求设备上存在 Market 应用程序,以便无论应用程序是否通过 Market 安装都能正常工作。

  • 也请看看这个question

【讨论】:

  • 没有c2dm我很好,我知道卸载哪些apk来摆脱市场。更大的问题是 adb install X 与 adb push /system/app/X 有什么区别
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
相关资源
最近更新 更多