How do I enable my app to be moved to the memory card?

4

All the apps I'm testing are not allowing me to move them to the memory card. Can you do that? Do you have to ask for some permission on Manifest.xml ?

I put the property that android:installLocation in Manifest.xml and even worked, but I have the following problem.

When I change the phone to the Card and try to open the error app, but if I restart the phone and open the app again it works, then I move to the phone and when I open the error app, but I restart and open the app works and so it stays.

I even managed to switch from one place to another, but I need to restart my phone to run the app. I'll put here an excerpt of the error what is giving:

09-21 01:03:46.868  21820-21820/com.anderson.escuta W/art? Failed to find OatDexFile for DexFile /mnt/asec/com.anderson.escuta-1/pkg.apk in OatFile /data/dalvik-cache/mnt@[email protected]@[email protected]
09-21 01:03:46.868  21820-21820/com.anderson.escuta E/art? oat file /data/dalvik-cache/mnt@[email protected]@[email protected] does not contain contents for /mnt/asec/com.anderson.escuta-1/pkg.apk with checksum 786154219
09-21 01:03:46.868  21820-21820/com.anderson.escuta E/art? oat file /data/dalvik-cache/mnt@[email protected]@[email protected] contains contents for /data/app/com.anderson.escuta-2.apk
09-21 01:03:46.868  21820-21820/com.anderson.escuta A/art? art/runtime/class_linker.cc:955] Failed to remove obsolete oat file from /data/dalvik-cache/mnt@[email protected]@[email protected]: Permission denied
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203] Runtime aborting...
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203] Aborting thread:
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203] "main" prio=10 tid=1 Runnable
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | group="main" sCount=0 dsCount=0 obj=0x653aa060 self=0x4191cdd8
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | sysTid=21820 nice=-20 cgrp=apps sched=0/0 handle=0x400a1154
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | state=R schedstat=( 40233070 20508181 144 ) utm=2 stm=2 core=1 HZ=100
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | stack=0xbe526000-0xbe52a000 stackSize=8MB
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: art::Thread::DumpStack(std::ostream&) const+87 [0x41848214] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: ??? [0x418403a4] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: art::Runtime::Abort()+79 [0x41840934] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: art::LogMessage::~LogMessage()+505 [0x416eda7a] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: art::ClassLinker::FindDexFileInOatFileFromDexLocation(std::string const&, unsigned int)+571 [0x41709dd8] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: ??? [0x4181064c] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.DexFile.openDexFileNative(Native method)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.DexFile.openDexFile(DexFile.java:296)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.DexFile.<init>(DexFile.java:80)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.DexFile.<init>(DexFile.java:59)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.DexPathList.loadDexFile(DexPathList.java:263)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.DexPathList.makeDexElements(DexPathList.java:230)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.DexPathList.<init>(DexPathList.java:112)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:65)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:57)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   - locked <0x60c49c30> (a android.util.ArrayMap)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.app.LoadedApk.getClassLoader(LoadedApk.java:329)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   - locked <0x658d5558> (a android.app.LoadedApk)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.app.LoadedApk.makeApplication(LoadedApk.java:518)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4388)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.app.ActivityThread.access$1500(ActivityThread.java:139)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1260)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.os.Handler.dispatchMessage(Handler.java:102)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.os.Looper.loop(Looper.java:136)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at android.app.ActivityThread.main(ActivityThread.java:5103)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at java.lang.reflect.Method.invoke(Native method)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203] Dumping all threads without appropriate locks held: thread list lock
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203] All threads:
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203] DALVIK THREADS (13):
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203] "main" prio=10 tid=1 Runnable
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | group="main" sCount=0 dsCount=0 obj=0x653aa060 self=0x4191cdd8
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | sysTid=21820 nice=-20 cgrp=apps sched=0/0 handle=0x400a1154
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | state=R schedstat=( 72628903 34617087 268 ) utm=5 stm=2 core=0 HZ=100
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   | stack=0xbe526000-0xbe52a000 stackSize=8MB
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: art::Thread::DumpStack(std::ostream&) const+87 [0x41848214] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: art::ThreadList::DumpLocked(std::ostream&)+67 [0x41853184] (libart.so)
09-21 01:03:47.128  21820-21820/com.anderson.escuta A/art? art/runtime/runtime.cc:203]   native: ??? [0x41840456] (libart.so)

Does anyone have any idea what it might be?

    
asked by anonymous 20.09.2014 / 23:50

1 answer

5

Using the android:installLocation property of the <manifest> tag, you can control the application installation location.

There are three possible values:

  • internalOnly , which is the default if you do not enter a value for the attribute. With it the application is installed in internal memory and can not be moved.
  • preferExternal defines that the installation should preferably be done on external storage. The system may not honor this request if there is no external storage mounted during the installation.
  • With the auto value the system installs the application into internal memory, but provides the user with the ability to change to external storage.
  • To use, simply set the% of%:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="nome.do.seu.pacote"
        android:installLocation="internalOnly|preferExternal|auto">
    
        ...
    
    </manifest>
    

    References:

  • link
  • 21.09.2014 / 00:05