Ответ 1
Проблема может заключаться в следующем:
- ошибка Android AOSP или ошибка в используемом вами ROM (Расконфигурация)
- что-то вызвало раздел, в котором хранятся приложения, установленные на SD-карте (или эмулированной внутренней карте), только для чтения
"Приложения на SD-карте хранятся в зашифрованном контейнере для целей безопасности платформы, поэтому другие приложения не могут изменять или повреждать их. При установке SD-карты эти контейнеры монтируются так, что к ним можно обращаться в одном и том же как приложения, хранящиеся во внутреннем хранилище".
В вашей stacktrace проблема такова:
E/Vold (932): Ошибка создания файла образа (файловая система только для чтения)
E/Vold (932): не удалось создать файл образа ASEC (файл только для чтения система)
У меня была аналогичная проблема с приложением, которое было определено в AndroidManifest.xml android: installLocation = "preferExternal" , и для меня работали (выполнялись независимо друг от друга)
I/qtaguid ( 6299): Failed write_ctrl(u 40) res=-1 errno=22
I/qtaguid ( 6299): Untagging socket 40 failed errno=-22
W/NetworkManagementSocketTagger( 6299): untagSocket(40) failed with errno -22
D/Finsky ( 6299): [1] 2.onResponse: Verification id=29 response=0
D/Finsky ( 6299): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 29
E/Vold ( 127): Error creating imagefile (Read-only file system)
E/Vold ( 127): ASEC image file creation failed (Read-only file system)
W/Vold ( 127): Returning OperationFailed - no handler for errno 30
E/PackageHelper( 6280): Failed to create secure container smdl733025106.tmp
W/DefContainer( 6280): Failed to copy package at /storage/emulated/0/myapp.apk
W/DefContainer( 6280): java.io.IOException: Failed to create container smdl733025106.tmp
W/DefContainer( 6280): at com.android.defcontainer.DefaultContainerService.copyPackageToContainerInner(DefaultContainerService.java:327)
W/DefContainer( 6280): at com.android.defcontainer.DefaultContainerService.access$000(DefaultContainerService.java:67)
W/DefContainer( 6280): at com.android.defcontainer.DefaultContainerService$1.copyPackageToContainer(DefaultContainerService.java:108)
W/DefContainer( 6280): at com.android.internal.app.IMediaContainerService$Stub.onTransact(IMediaContainerService.java:60)
W/DefContainer( 6280): at android.os.Binder.execTransact(Binder.java:446)
-
По https://developer.android.com/guide/topics/data/install-location.html изменить на android: installLocation = "auto"
-
По http://forum.xda-developers.com/showpost.php?p=58409922&postcount=4845 Если вы хотите установить его на " внутреннее хранилище устройств", независимо от того, что говорит манифест или что решает система.
Перейдите в "Настройки" > "Приложения" > "Открыть меню" > "Предпочтительное место установки" > установите его в "Внутреннее хранилище устройств". У меня был этот набор: "Пусть система решить". Это вызвало отказ некоторых APK от установки, поскольку они были отмечены, чтобы предпочесть SD-карту в качестве места их установки и поэтому они попытались установить на SD, и это просто не получилось. Теперь что все устанавливается на устройство, оно работает нормально.
-
Если вы хотите установить его в " внешнее хранилище"
adb root
adb shell
mount -o rw, remount rootfs/
chmod 777/mnt/sdcard
pm install/mnt/sdcard/myapp.apk
mount -o ro, remount rootfs/ -
Согласно https://code.google.com/p/android/issues/detail?id=9593 & & http://www.androidpolice.com/2011/04/19/fixing-the-couldnt-install-on-usb-storage-or-sd-card-problem-on-android/
Только если вы можете найти smdl2tmp1.asec по следующим путям или вы получите ошибкуsmdl2tmp1 03-24 18: 48: 38.784: ERROR/Vold (86): Файл ASEC '/mnt/secure/asec/smdl2tmp1.asec' в настоящее время существует - сначала уничтожьте его! (Адрес уже используется)
adb root
adb shell rm/sdcard/.android_secure/smdl2tmp1.asec
adb shell rm/mnt/secure/asec/smdl2tmp1.asec