默认安装到SDCard


29

我想知道是否有一种方法可以告诉Android默认情况下在micro SD卡上安装应用程序,而不必先将应用程序下载到内存中,然后再手动将其移动到SD卡上。

谢谢



特别是因为@Yeradis回答android.stackexchange.com/a/4976/156
GAThrawn

4
@GAThrawn不,那不是骗人的您链接的问题是“可以将应用程序移至SD”。这是“如何指定默认安装位置”。同一条街,不同的房子。
伊齐

Answers:


33

HowtoGeek上的本文介绍了一种利用的可能方法:

  • 启用USB调试
  • 将设备连接到计算机
  • 执行该命令adb shell pm setInstallLocation 2
    (或新的语法adb shell pm set-install-location 2
  • 断开连接,完成。

此命令会将设备的默认安装目标设置为SDCard。那并不一定意味着所有东西都安装在这里:只有支持此功能的应用程序才可以在那里安装,并且如果开发人员认为需要的话,可以在其应用程序清单中“否决”它。从链接的API参考中

更改默认安装位置。位置值:

  • 0:自动-让系统决定最佳位置。
  • 1:内部-安装在内部设备存储上。
  • 2:外部-安装在外部介质上。

注意:这仅用于调试;使用此功能可能会导致应用程序中断以及其他不良行为。

有关ADB的更多详细信息,以及如何将其获得最小版本(例如,在安装整个SDK的过程中没有过多杀伤力),您可以看一下 标签wiki


更新:为避免与t0mm13b的答案混淆,在安装过程中需要注意以下几点

  1. 您在找到了一些应用,并决定安装它
  2. 在您单击“安装”并同意条款/许可后,该将下载/data/local,即您的您无法更改。
  3. 下载完成后,.apk将自动安装。在哪里,取决于多种因素:
    • 如果开发人员未android:installLocation在其应用程序中指定属性Manifest,则该应用程序将安装到内部故事中。句号,别无选择(请参阅:API参考)。
    • 如果将android:installLocation其设置为preferExternal,并且有外部存储可用,它将进入该目录。
    • 如果设置为auto,则再次取决于:
      1. 该应用程序是否包含小部件,服务,是否要在启动时启动以及其他几项内容,它都存储在内部存储中。句号,别无选择。
      2. 设备“默认安装位置”指向的位置

可能有助于包含警告-它不能保证能正常工作,特别是如果应用程序具有自己的窗口小部件... :)
t0mm13b 2013年

如我所写:只有支持此功能的应用程序才能运行:)小部件,服务等都告诉它不支持它:)
Izzy

执行命令adb shell pm setInstallLocation 2后,错误:找不到设备
moudrick 2015年

1
这听起来像是您跳过了前两个步骤(启用USB调试并在此之后连接设备)–或者您在Windows上并且没有安装相应的驱动程序。请点击相应的链接,然后从那里继续@moudrick。
伊兹

5

那不能改变!这就是Android的工作方式。

从Google Play进行的所有下载均进入内部文件系统,然后从以下位置进行:

  • 设置>管理应用
  • 点击该应用,检查是否已启用“ 移至SD卡”按钮。

如果“ 移至SD卡 ”按钮被禁用或显示为灰色,则可能会阻止该应用程序正常运行-例如主屏幕上自己的窗口小部件。

另外,请参阅此页面右侧相关侧栏中的答案。:)


1
您确定吗,t0mm13b?是不是有一些ADB命令adb shell pm setInstallLocation 2(即SD卡),如所描述这里
伊兹

1
开发人员可以在清单中指定该名称,以使应用程序具有移动到SDCard的功能。android:installLocation="auto"没看过adb shell pm setInstallLocation 2,大概是在这种情况下您指定了软件包名称...
t0mm13b 2013年

1
否,t0mm13b-请参阅我的答案和链接的文章。这将设置设备的默认安装位置。因此,如果Manifest说“自动”,那就行了。如果Manifest说的不是“自动”,那就去Manifest说的地方。另请参见:API ref,也可在此处获得pm set-install-location(新语法)命令。
伊兹

1
Izzy-我为AndroidManifest指定的内容android:installLocation- 实际上是从管理应用程序设置启用了“ 移至SDCard ” ...有些开发人员未指定它,并使按钮处于禁用状态,但我承认-从未见过adb命令执行此操作
t0mm13b

1
嗯,现在我明白了–不同的重点:您说的是“如果不打算将应用程序安装在SD上,则不能这样做” – 除非另有说明,否则我将重点放在默认情况下。但是请检查您答案的前4行,它们说的有所不同。但是,您是正确的:下载首先转到/data/local,然后从那里安装了该应用程序。但是根据设置和清单,它既可以安装在内部,也可以直接安装在外部。//如果您想详细讨论这一点:您还记得我们的酒吧吗?:)
Izzy

4

在您的手机中安装“ Android终端模拟器”并打开

$ su
# pm get-install-location
0[auto]
# pm set-install-location 2
# pm get-install-location
2[external]

2
有趣,但是您必须为此工作扎根
Robert S. Barnes

-2

转到“管理应用”,然后选择“所有”标签,然后找到“ Google Play商店”。点击它,然后按“卸载更新”按钮。之后,前往Play商店将所有应用安装在SD卡上。这就是我在QMobile A110(Android 4.2)上所做的事情。


1
我认为您缺少将默认安装位置设置为SD卡的中间步骤,即使如此,它也不总是对每种应用程序都如此。
2014年

-3

问题是,如果您的手机已扎根,您可以更改默认安装目录。下载幸运的补丁程序,然后点击工具,您可以在其中找到更改默认安装目录的选项。**请勿在android 4或更高版本上执行此操作,否则可能会导致不可逆转的更改。**


2
根据Android版本市场份额2016 ,在发布此答案之日,所有Android用户中有97.7%使用的是Android 4.0或更高版本,因此Lucky Patcher可能会对几乎所有当前的Android用户造成不可逆转的更改。
karel

2
那将是什么“不可逆转的变化”?我在Kitkat设备上没有注意到它们:)但是正如@karel指出的那样:如果您认为不应该使用它,为什么推荐呢?
伊齐
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.