Установка приложения на SD-карту в Android SDK 2.2 - PullRequest
9 голосов
/ 27 августа 2010

Я сталкиваюсь с этой проблемой и нахожу решение этой проблемы с последних 2 недель.

Сейчас я разработал приложение для Android для клиента perpose, размер которого составляет 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 на устройство 'emulator-5554'
[2010-08-27 17:58:28 - demo_test] java.io.IOException: невозможно загрузить файл: на устройстве не осталось места
[2010-08-27 17:58:28 - demo_test] Запуск отменен!

Редактировать:

alt text

  1. Связана ли эта проблема с памятью внутренней или внешней памяти?
  2. Что мне нужно сделатьзапустить приложение и по-прежнему тестировать с помощью эмулятора?
  3. Как установить приложение на SD-карту в Android SDK 2.2?

Ответы [ 6 ]

10 голосов
/ 27 августа 2010

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

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

Кроме того, вывод Logcat тоже подойдет.

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

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

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

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

Причина, по которой вы получаете эту ошибку, заключается в том, что после того, как ОС Android извлекает необходимый ОЗУ из этих 192 МБ, «размер приложения» не может вместить это приложение объемом 50+ МБ.

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

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

9 голосов
/ 28 августа 2010

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

5 голосов
/ 27 августа 2010

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

3 голосов
/ 06 сентября 2010

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

2 голосов
/ 20 августа 2011

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

adb shell pm setInstallLocation 2

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

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

adb shell pm setInstallLocation 0

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

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

1 голос
/ 27 августа 2010

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

adb shell df

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

...