Ошибка при установке android:installLocation=preferExternal

когда я устанавливаю файл Manifest.xml следующим образом

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.fugo.Rocket"
  android:versionCode="1"
  android:versionName="1.0"
  android:installLocation="preferExternal">

установка андроида выдаст ошибку

[2011-03-24 18:18:47 - Rocket Project] Ошибка установки: INSTALL_FAILED_CONTAINER_ERROR [2011-03-24 18:18:47 - Rocket Project] Дополнительные сведения см. в выводе logcat. [2011-03-24 18:18:47 - Rocket Project] Запуск отменен!

но когда я устанавливаю android:intallLocation="auto"

установка прошла успешно. это почему?

ошибка логкэта

03-24 18:48:38.784: ОШИБКА/PackageHelper(1284): не удалось создать безопасный контейнер smdl2tmp1 03-24 18:48:38.784: ОШИБКА/DefContainer(1284): не удалось создать контейнер smdl2tmp1 03-24 18:48: 38.784: ОШИБКА/Vold(86): файл ASEC '/mnt/secure/asec/smdl2tmp1.asec' в настоящее время существует - сначала уничтожьте его! (Адрес уже используется)


person Fugogugo    schedule 24.03.2011    source источник
comment
Не могли бы вы предоставить детали logcat? Вы можете получить его с помощью инструмента adb, Eclipse в режиме отладки или с помощью приложения aLogCat, доступного на рынке.   -  person miguelv    schedule 24.03.2011
comment
03-24 18:48:38.784: ОШИБКА/PackageHelper(1284): не удалось создать безопасный контейнер smdl2tmp1 03-24 18:48:38.784: ОШИБКА/DefContainer(1284): не удалось создать контейнер smdl2tmp1 03-24 18:48: 38.784: ОШИБКА/Vold(86): файл ASEC '/mnt/secure/asec/smdl2tmp1.asec' в настоящее время существует - сначала уничтожьте его! (Адрес уже используется)   -  person Fugogugo    schedule 24.03.2011
comment
Это на эмуляторе?   -  person Robby Pond    schedule 24.03.2011
comment
Вы можете попробовать установить чистую SD-карту? В противном случае вы можете попробовать удалить файл smdl2tmp1.asec.   -  person miguelv    schedule 24.03.2011
comment
правильно. удаление этого файла покончит с моей проблемой. :)   -  person Fugogugo    schedule 25.03.2011
comment
У меня была эта проблема, и установка android:intallLocation=auto решила ее. Мне так и не удалось найти smdl2tmp1.asec, чтобы удалить его.   -  person cdavidyoung    schedule 28.07.2012


Ответы (5)


Проверьте, какая у вас установлена ​​версия minSDK. Эта функция доступна только в FROYO. (SDK ВЕРСИИ 8 и далее).

Также вам нужно скомпилировать это и запустить на Android2.2 sdk

person Anand Sainath    schedule 25.03.2011
comment
Стоит отметить, что, хотя эта функция доступна только начиная с SDK уровня 8, она по-прежнему будет работать в более ранних версиях и просто игнорировать XML. - person stealthcopter; 24.05.2011
comment
Чтобы скомпилировать его, вы должны установить цель на ›=8 и можете оставить minSDKversion ‹8 - person Andrey Regentov; 24.03.2012
comment
Существует несколько вариантов проблемы Failed to create container smdl2tmp1, для некоторых из них см. мой ответ здесь: stackoverflow.com/a/30343659/313113 - person Alex Bitek; 20.05.2015

В моем случае файл smdl2tmp1.asec был каким-то образом поврежден. Я вставил карту в ПК и даже не смог скопировать этот файл на жесткий диск (для резервного копирования). Поэтому мне пришлось удалить его, и это решило проблему.

Вчера мой телефон перезагрузился во время установки игры, и я думаю, что это как-то связано с этой проблемой.

person Javier Sedano    schedule 23.04.2012

Похоже, что Android немного глючит в этом отношении и не обрабатывает все возможные случаи правильно.

У меня была похожая, но более сложная проблема. Решение в основном состоит в том, чтобы удалить соответствующий файл в /sdcard/.android_secure/... См. также:

http://www.androidpolice.com/2011/04/19/fixing-the-couldnt-install-on-usb-storage-or-sd-card-problem-on-android/

Моя собственная проблема связана с двумя устройствами Android. Одно приложение было установлено на устройстве №1 (Android 2.2), затем я подключил устройство №1 к устройству №2 (Android 4.0.3). Затем я установил это же приложение на устройство № 2. Угадайте, что он установил на SD-карту устройства №1, заменив установку на устройстве №1. Приложение не работало на устройстве № 2 после размонтирования устройства № 1. Приложение все еще работало на устройстве № 1. Я удалил его на устройстве № 2, ошибок нет, но не смог переустановить (получил ошибку «Не удалось создать безопасный контейнер smdl2tmp1»).

Мое решение состояло в том, чтобы удалить приложение на устройстве № 1, затем повторно смонтировать его на устройстве № 2, а затем установить его на устройстве № 2. Затем я переместил приложение с SD-карты во внутреннюю память.

person Boris van Schooten    schedule 09.07.2012

Могу ли я предложить вам проверить и посмотреть, установлена ​​ли у вас внешняя SD-карта из вашего эмулятора? Вы можете установить его при создании AVD.

person Mohamed    schedule 02.03.2012

Перезагрузка устройства мне помогла.

person Geltrude    schedule 30.07.2013