Установка приложения на SD-карту в Android sdk 2.2

Я столкнулся с этой проблемой и нашел решение этой проблемы за последние 2 недели.

В настоящее время я разработал приложение для Android для клиента, размер которого составляет 54 МБ, из которого 52 МБ только изображений/фотографий.

[Изменить: мне нужно сохранить изображения в папке с возможностью "вытаскивания" ]

Итак, я хочу установить его на SD-карте Android SDK 2.2 для этого, я уже установил android:installLocation="preferExternal" в файле AndroidManifest.xml. Я создал 256-мегабайтную SD-карту, создавая avd, размер кучи - 192, размер оперативной памяти - 192

но он все еще показывает мне ошибку:

[2010-08-27 17:58:28 - demo_test] Не удалось загрузить demo_test.apk устройство 'эмулятор-5554'
[2010-08-27 17:58:28 - demo_test] java.io.IOException: невозможно загрузить файла: на устройстве не осталось места

[2010-08-27 17:58:28 - demo_test] Запуск отменен!

Edit:

alt text

  • Является ли эта проблема связана с памятью внутренней памяти или внешней памяти?
  • Что мне нужно сделать, чтобы запустить приложение и все еще тестировать с эмулятором?
  • Как установить приложение на SD-карту в Android sdk 2.2?

Ответ 1

Является ли размер sd-карт действительно 256 МБ? Я иногда забываю суффикс и заканчиваю... что-то очень маленькое.

Вы также можете всегда поднять размеры до 512, 256,266 и повторить попытку, чтобы убедиться в этом.

Кроме того, вывод Logcat тоже будет приятным.

Изменить: Как вам кажется, вы не можете просто "установить" приложение на SD-карте, даже если на нем есть 30 + Gigabyte. Установка зависит также от внутренней памяти телефона даже в версии 2.2.

Пример: Nexus имеет 512 Мб внутренней памяти. Android os берет необходимый барабан для камеры, gpu, ядра и т.д., Оставляя пользователя только с около 190 МБ пространства для приложения (что будет еще меньше из-за уже установленных приложений и т.д.).

HTC Hero, с другой стороны, имеет только внутреннюю память 288 Мбайт, оставив его с очень маленьким "портом размера приложения".

В зависимости от телефона приложение 90mb будет устанавливаться на SD-карту на nexus one, но не будет на Hero из-за ограничений памяти.

Причина, по которой вы получаете эту ошибку, заключается в том, что после того, как андроид os берет необходимый ram из этих 192MB, "размер пэра приложения" недостаточно для хранения этого приложения с 50 + mb.

Я думал, что installLocation будет устанавливать непосредственно на SD, но это не так.

Блог Vidar Vestnes подтвердил то, что я описал выше, выполнив тест с разными размерами приложений в своем HTC Desire..

Ответ 2

Лучшим подходом было бы размещение ваших ресурсов в их собственном каталоге на SD-карте. Тогда ваше приложение может загрузить их, когда это необходимо.

Ответ 3

Я предлагаю вам попробовать увеличить доступную внутреннюю память (снимок экрана говорит 43 МБ), в случае, если .apk копируется там сначала, прежде чем он будет установлен на SD-карту ОС.

Ответ 4

Предполагая, что вам нужны изображения на вашем устройстве, а не в облаке, самым простым способом было бы подключить приложение к вашему серверу и загрузить почтовый индекс, содержащий все изображения при первом запуске. Пока устройства не получат более крупный размер приложения, это может быть вашим единственным решением.

Ответ 5

Вы можете использовать следующее:

adb shell pm setInstallLocation 2

из каталога android-sdk/tools, чтобы заставить эмулятор установить на вашу SD-карту, независимо от ее размера - желательно достаточно большой, чтобы держать ваше приложение (ы), очевидно.

Если вы хотите вернуться к установочному месту по умолчанию (память телефона для телефона), выполните следующие действия:

adb shell pm setInstallLocation 0

Вы также можете использовать эти команды adb на своем телефоне/планшете.

После того, как вы настроили эмулятор для установки на SD-карту, вы можете перейти в "Настройки" - "Приложения" - "Управление приложениями", выбрать приложение, которое вы хотите на SD-карте, и "Переместить в SD Card" больше не будет выделена серым цветом.

Ответ 6

вы можете проверить, действительно ли SD-карта установлена ​​и достаточное пространство доступно при запуске

adb shell df

в каталоге android-sdk/tools он показывает, какие разделы в данный момент установлены, насколько они велики и сколько свободного места доступно