Ошибка при создании файла образа (файловая система только для чтения)

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

В моем случае я могу успешно установить и запустить другой проект андроида из одного и того же эмулятора (x86 тоже попробовал), но этот конкретный проект приложения вызывает следующую ошибку при установке также вручную «adb install» изнутри оболочки тоже не работает.

Одна из ошибок из журнала ниже найдена (номер строки 232) https://android.googlesource.com/platform/system/vold/+/froyo/Loop.cpp

Однако я не знаю, связана ли ошибка «Нет провайдера контента …» с тем же стеком ошибок.

Если у него была ошибка разрешения записи (например, sdcard или файловая система), другие приложения также не должны устанавливать!

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

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

--------- beginning of /dev/log/main D/AndroidRuntime( 1977): D/AndroidRuntime( 1977): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<< W/linker ( 1977): libdvm.so has text relocations. This is wasting memory and is a security risk. Please fix. D/AndroidRuntime( 1977): CheckJNI is ON D/dalvikvm( 1977): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 1977): Added shared lib libjavacore.so 0x0 D/dalvikvm( 1977): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 1977): Added shared lib libnativehelper.so 0x0 D/dalvikvm( 1977): No JNI_OnLoad found in libnativehelper.so 0x0, skipping init D/dalvikvm( 1977): Note: class Landroid/app/ActivityManagerNative; has 179 unimplemented (abstract) methods E/memtrack( 1977): Couldn't load memtrack module (No such file or directory) E/android.os.Debug( 1977): failed to load memtrack module: -2 D/AndroidRuntime( 1977): Calling main entry com.android.commands.pm.Pm E/PackageHelper( 1680): Failed to create secure container smdl2tmp1 --------- beginning of /dev/log/system W/ActivityManager( 1149): No content provider found for permission revoke: file:///data/local/tmp/myapp.apk E/Vold ( 932): Error creating imagefile (Read-only file system) E/Vold ( 932): ASEC image file creation failed (Read-only file system) W/Vold ( 932): Returning OperationFailed - no handler for errno 30 E/DefContainer( 1680): Failed to create container smdl2tmp1 W/ActivityManager( 1149): No content provider found for permission revoke: file:///data/local/tmp/myapp.apk D/dalvikvm( 1149): GC_EXPLICIT freed 161K, 22% free 5442K/6948K, paused 1ms+1ms, total 8ms D/AndroidRuntime( 1977): Shutting down VM 

Проблема может заключаться в следующем:

  • Ошибка Android AOSP или ошибка в ROM, который вы используете (неправильная настройка)
  • Что-то вызвало раздел, в котором хранятся приложения, установленные на SD-карте (или эмулируемой внутренней карте), для чтения только

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

Проблема заключается в следующем:

E / Vold (932): Ошибка создания файла образа (файловая система только для чтения)
E / Vold (932): Сбой создания файла изображения ASEC (файловая система только для чтения)

У меня была аналогичная проблема с приложением, которое определило в AndroidManifest.xml андроид: 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-хранение или-сд-карта проблемы на андроид /
    Только если вы можете найти 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

В моем случае я использую устройство с Android версии 6, развивающееся для Unity.

Я получаю ту же ошибку при установке приложения непосредственно из редактора Unity, этого не произойдет, если я загружу приложение в консоль разработчика Android в качестве бета-версии, а затем загрузите и установите его там, в этом случае андроид Сделает необходимое шифрование и успешно установит приложение.

Моим решением для прямой установки было установить: android build -> Настройки проигрывателя> Установить местоположение -> для принудительного внутреннего

В дополнение к ответу @ Mnemoinc:

  • Если вы хотите принудительно установить «внутреннее хранилище»,

    Adb root
    Adb shell
    Pm install -f /sdcard/myapp.apk

Это может быть полезно при использовании Cyanogenmod и иметь безопасное хранилище.

Intereting Posts
Android: проблемы с Unicode / Charset при отправке SMS (sendTextMessage) Android: резервные сообщения и файлы программно Выделите пользовательский элемент списка при длительном нажатии Добавление цветного фона с текстом / значком под развернутой строкой при использовании Android RecyclerView Android ValueAnimator приостанавливается во время повтора Примеры ORMLite для Android не будут компилироваться Как я могу удалить OnClickListeners из ViewHolders RecyclerView при их удалении? Есть ли способ программно прокрутить представление прокрутки к определенному тексту редактирования? Как отображать только один вход в систему, а затем после запуска приложения непосредственно в android Режим хоста Android и режим аксессуаров Как получить Twitter и facebook Authentication and Token через классы Account Manager для Android Отладка проекта библиотеки Android с исходным кодом Java Отображать данные каждые 10 секунд в Android Библиотека просмотра PDF в формате PDF без лицензии GPL Как получить общий ответ от Retrofit 2