Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建imagefile(只读文件系统)时出错_Android - Fatal编程技术网

Android 创建imagefile(只读文件系统)时出错

Android 创建imagefile(只读文件系统)时出错,android,Android,首先,这不是重复的问题,我也尝试过其他类似线程的解决方案,但看起来这个案例是不同的 在我的例子中,我可以从同一个仿真器(x86也尝试了arm)成功安装和运行其他android项目,但是这个特定的应用程序项目在从shell内部手动安装“adb安装”时也会抛出以下错误,也不起作用 发现以下日志中的一个错误(行号232) 但是,我不知道错误“无内容提供商…”是否与同一错误堆栈有关 如果它有写权限错误(SD卡或类似的文件系统权限),那么其他应用程序也不应该安装 这个有问题的应用程序是一个NDK项目,有

首先,这不是重复的问题,我也尝试过其他类似线程的解决方案,但看起来这个案例是不同的

在我的例子中,我可以从同一个仿真器(x86也尝试了arm)成功安装和运行其他android项目,但是这个特定的应用程序项目在从shell内部手动安装“adb安装”时也会抛出以下错误,也不起作用

发现以下日志中的一个错误(行号232)

但是,我不知道错误“无内容提供商…”是否与同一错误堆栈有关

如果它有写权限错误(SD卡或类似的文件系统权限),那么其他应用程序也不应该安装

这个有问题的应用程序是一个NDK项目,有一个自定义内容提供商,我试着省略了它,但没有用。内容提供商错误似乎与操作系统中的apk安装有关,而不是应用程序中的内容提供商

我厌倦了用真正的设备进行测试,我担心这会降低我的手机寿命,因为我不得不经常这样做

--------- 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
-----------开始/dev/log/main
D/AndroidRuntime(1977年):

D/AndroidRuntime(1977):>>>>>>AndroidRuntime开始com.android.internal.os.RuntimeInit问题可能来自:

  • Android AOSP错误或您正在使用的ROM中的错误 (配置错误)
  • 某种原因导致存储SD卡(或模拟内部卡)上安装的应用程序的分区为只读
出于平台安全目的,SD卡上的应用程序存储在加密容器中,以便其他应用程序不能修改或损坏它们。在安装SD卡时,这些容器的安装方式与内部存储中存储的应用程序的访问方式相同

在stacktrace上,问题是:

E/Vold(932):创建imagefile(只读文件系统)时出错
E/Vold(932):ASEC映像文件创建失败(只读文件) 系统)

我在一个应用程序中遇到了类似的问题,该应用程序在其AndroidManifest.xml中定义了android:installLocation=“preferExternal”,以下内容对我有效(独立完成):

  • 根据更改为android:installLocation=“auto”

  • 如果要将其安装到“内部设备存储”,则与,而不管清单上说了什么或系统决定了什么

    转到设置>应用程序>打开菜单>首选安装位置> 将其设置为“内部设备存储”。我把它设置为“让系统 决定”。这导致一些APK安装失败,因为 他们被标记为更喜欢SD卡作为安装位置 因此,他们试图安装到SD上,但失败了。现在 所有东西都安装在设备上,工作正常

  • 如果要将其安装到“外部存储器”

    亚行根
    亚行壳牌
    挂载-o rw,重新挂载rootfs/
    chmod 777/mnt/SD卡
    pm安装/mnt/sdcard/myapp.apk
    挂载-o ro,重新挂载rootfs/

  • 依照 &&
    仅当您能够通过以下路径找到smdl2tmp1.asec时 否则你会出错

    smdl2tmp1 03-24 18:48:38.784:错误/Vold(86):ASEC文件“/mnt/secure/ASEC/smdl2tmp1.ASEC”当前存在-请先销毁它!(地址已在使用中)

    亚行根
    adb shell rm/sdcard/.android_secure/smdl2tmp1.asec
    adb shell rm/mnt/secure/asec/smdl2tmp1.asec


除了@Mnemoinc的回答之外:

  • 如果要强制安装到“内部存储”

    亚行根
    亚行壳牌
    pm安装-f/sdcard/myapp.apk


当使用Cyanogenmod并拥有安全存储时,这可能很有用。

在我的例子中,我使用的是Android 6版设备,为Unity开发

当直接从Unity编辑器安装应用程序时,我遇到了相同的错误,如果我将应用程序作为测试版上传到android Game Play开发者控制台,然后从那里下载并安装,则不会发生这种情况,在这种情况下,安卓将进行必要的加密并成功安装应用程序

我的直接安装解决方案设置为: android构建->播放器设置->安装位置->强制内部

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)