【问题标题】:Changing android:installLocation from preferExternal to internalOnly将 android:installLocation 从 preferExternal 更改为 internalOnly
【发布时间】:2013-03-25 16:32:20
【问题描述】:
我在 Google Play 市场上有一个应用程序,我在 manifest.xml 文件中添加了 android:installLocation="preferExternal" 并在很久以前发布。现在我想添加 Android 主屏幕小部件,所以我需要将其更改为 android:installLocation="internalOnly"。如果我这样做,当用户升级时会发生什么?因为用户已经在 SD 卡上安装了旧应用程序。这种情况的最佳解决方案是什么??
如果有人有这种经历,请指教。
提前致谢:)
【问题讨论】:
标签:
android
android-widget
installation
android-sdcard
【解决方案1】:
当您将安装位置设置为 preferExternal 时,应用程序特定文件存储在外部 sdcard 的 .android_secure 目录中。
当用户将 SD 卡安装为 USB 大容量存储时,这些类型的应用程序不可用(从 Android Jelly Bean 中删除的功能)。
谈到这个问题,我相信在您的情况下,应用程序将安装到内部存储器中,并将 .android_secure 中的文件移动到内部位置。
您可以通过以下方式确认:
- 从 Play 商店安装应用程序,安装位置为 preferExternal。
- 确认您的应用程序安装在外置SD卡中,您可以使用设置->应用程序进行检查。
- 现在创建新的签名应用程序包。
- 使用
adb install -r myapp.apk安装
- 再次转到设置->应用并确认位置。
- 运行功能测试,看看是否没有任何问题。
【解决方案2】:
老问题,但根据我的测试,如果一个应用程序安装在 SD 卡上,然后你将 Manifest 更改为 android:installLocation="internalOnly" (或省略 android:installLocation 属性,相同),当应用程序升级包管理器会自动将应用程序从 SD 卡移动到内部存储。
不知道如果这是不可能的会发生什么(例如,内部存储没有足够的根)。