Установка приложения на 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
он показывает, какие разделы в данный момент установлены, насколько они велики и сколько свободного места доступно