How do I solve the INSTALL_FAILED_DEXOPT error?
Asked Answered
H

45

213

I am developing an Android application using Android 2.2, my application APK size is 22.5 MB, and I would like to create a new build for a Samsung tablet. I got the following error:

INSTALL_FAILED_DEXOPT

How do I solve this kind of error?

Hardandfast answered 1/3, 2011 at 10:57 Comment(12)
were you able to successfully install this application on devices other than the Samsung tablet?Adventuresome
You need to paste in the logcat output generated when the installation fails.Amelia
I had the same problem on a device I was testing on(HTC Droid Eris). I had a previously installed version of my app on the phone, I just uninstalled and reinstalled and it was fine.Merlenemerlin
Uninstalling and reinstalling the app always work. Wipe user data or recreating the AVD are all just doing the same in a more time consuming manner. Question is, Is there a better and quicker option?Guile
@ChandraMohan that is NOT true. Stop trying to make it true. I've formatted my device and tried to re-install the app. It still throws this error!Guacharo
Just change the workspace and should work fine.Stopover
It depends i turn off the eclipse and started it work fine but You will need to Uninstall your old version and then you should have no more issues... Settings-->Applications-->Manage Applications-->[Find and Uninstall your App] INSTALL_FAILED_DEXOPT errors should not erupt. LikeMordred
Uninstalling app worked for meTrace
logcat is your friend here. See my answer belowGlandulous
This solved my issue !!! [enter link description here][1] [1]: https://mcmap.net/q/128628/-how-to-avoid-linearalloc-exceeded-capacity-error-androidProcess
Clearing space on my Nexus One fixed this issue for me.Marseilles
One possible issue could be that your apk is no longer fit to install thus you get this error. Possible duplicate of this question. Solution is to check the apk using apkanalyzer or verify using the program you signed it with. All the best!Methanol
T
117

This seemed to be related to disk space for me. A newly rolled 5.1 emulator boots with a "low on disk space" error - and looking at the emulator properties, the default space allocated for internal storage is 800MB which seems low.

Solution, therefore was to increase this (I went to 4GB). Oddly the emulator still boots with the same disk space warning but factory resetting it (Settings --> Backup and Restore inside the emulator) solved it entirely for me.

Just a bit odd that it doesn't work out of the box with default settings.

Tope answered 13/9, 2018 at 20:38 Comment(7)
Indeed this what the issue I had and resetting via the phone settings fixed it for me. thanks!Litigant
Tried almost everything but nothing worked except this one, thanksFloss
After 2 hrs i found this comment - thank you for saving my day, worked!Vibraphone
This caused the INSTALL_FAILED_DEXOPT on my emulator too. I had increased the size but I needed to go to settings and run a factory restore. It fixed the issue.Tsarevitch
Christ... again this happened to me after updating my mac OS. Doubling down on my reimbursement of that solution goto -> settings and run factory restore. Had to look up this question just to remember how I fixed it... thank god for history on stack overflow, and I was able to find my commentTsarevitch
Settings --> Backup and Restore fix it!! ThanksHanger
Indeed the INSTALL_FAILED_DEXOPT error was removed after factory reset. Notice that APK installs only works from command line, drag & drop still fails for some reason.Mcclish
S
116

Restarting the emulator from the Android SDK and AVD Manager and selecting the option Wipe User Data has solved this problem for me.

You can find the option as highlighted in the below given image:

Wipe User Data option when starting android emulator

Schecter answered 17/3, 2011 at 6:25 Comment(5)
What if it's my phone, and not an emulator?Margheritamargi
@Margheritamargi try adb kill-server then adb start-server should solve your problem. May be older app exists then uninstall it first.Schecter
@Margheritamargi You probably tried, but restarting the phone worked for me :)Gallbladder
kill server and then start didn't work for me, restarting emulator and Wiping Data works for me actually.Aurify
This worked for me and I had just installed a new emulator. Very strangeSubvert
B
18

Your old version of the app that you are installing has dependent libraries / jars that have been changed. I ran into this issue when updating other jar files that my app was refrencing.

You will need to Uninstall your old version and then you should have no more issues...

Settings-->Applications-->Manage Applications-->[Find and Uninstall your App]

INSTALL_FAILED_DEXOPT errors should not erupt. Like

[2011-06-14 01:23:40 - ProtectYourself] Installing ProtectYourself.apk...
[2011-06-14 01:24:26 - ProtectYourself] Installation error: INSTALL_FAILED_DEXOPT
[2011-06-14 01:24:26 - ProtectYourself] Please check logcat output for more details.
[2011-06-14 01:24:26 - ProtectYourself] Launch canceled!

Whoo hoo.

Borrell answered 14/6, 2011 at 8:36 Comment(2)
I can concur the cause & effect. The same situation happened in my case after tinkering with jars. For me this was on Android 2.3 Gingerbread based devices only, ICS & Lollipop were fine.Vivienne
Will this be an issue when uploading to the Play Store? or does the installer delete the app and reinstall?Hyposensitize
J
17

Ran into this with Android Studio 3.4.1 but using an older (5.0) emulator. This procedure (on Mac) fixed the issue:

  1. stop emulator
  2. cd ~/.android/avd/[emulator name].avd
  3. rm *.lock
  4. wipe emulator
  5. start emulator
June answered 14/6, 2019 at 16:54 Comment(6)
Doing what's mentioned above after increasing the emulator's internal storage to 4gb is the only thing that worked for me.Clevelandclevenger
@Clevelandclevenger I'm not surprised that sometimes more than one thing will have to be done, just based on all the different answers to this question!June
Agreed! And congrats on snagging the username "Ken".Clevelandclevenger
Unfortunately none of the combinations of wiping/increasing storage/wiping again helped me. I gave up.Coquito
@CanPoyrazoğlu — I almost gave up, too. I think the emulators must be extremely sensitive and many things can cause them to fail (as evidenced by all the different answers here to a question asked more than eight years ago). Removing the .lock files was key in my case, but I can certainly see where that might not solve all the issues.June
Both lock file deletion and emulator memory increase were necessary for my case. I increased my Emulator's memory from 1 GB to 2 GB and it worked. Only deleting lock file didn't help me.Faus
P
15

If you are using Android Studio, try clean your project:

Build > Clean Project

Pentagrid answered 4/8, 2014 at 14:29 Comment(0)
F
11

It seems like this error message can have many different causes. The case I came across was on a real device (so the emulator bases solutions did not apply).

Basically, when this happens, set your Logcat filter to Verbose or Warn, which will help you get more information about the cause.

In my case, multiple or conflicting versions of JUnit were being included in the project I was working on (a large existing codebase). The Android app I was trying to deploy had several library projects as dependencies, and I had mistakenly set things up to include multiple JUnit jar files.

I discovered this based on a series of Logcat messages. Note that the WARN line gives the cause:

DEBUG/dalvikvm(4808): DexOpt: 'Ljunit/framework/TestSuite$1;' has an earlier definition; blocking out
11-06 14:30:10.973: WARN/dalvikvm(4808): Invalid file flags in class Ljunit/runner/Sorter$Swapper;: 0209
11-06 14:30:10.973: null/libc(4808): Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1), thread 4808 (dexopt)
Fistic answered 6/11, 2012 at 22:12 Comment(2)
This is a good suggestion. I agree that you should view LogCat output to see what the actual error message is. I was getting this error and it was because my device was low on storage and it was failing to unzip the APK. I believe there are multiple reasons that this error can be triggered and uninstalling or clearing user data may be unnecessary. I posted this same suggestion as an answer to a similar (duplicate) question.Newark
SORRY, THIS IS THE SAME POINT THAT Bryan Bedard WAS MAKING. I was out of space -- usually, I get an error like "insufficient space", but for some reason I got this DEXOPT error. Logcat showed an error Zip inflate: write failed: No space left on device.Hypothec
C
11

I' changed the RAM size and internel storage capacity of the emulator Now IT IS Working... in eclipse AVD manager

Cockchafer answered 1/6, 2015 at 8:19 Comment(2)
This also solves the problem in Android Studio. I had only 200Mb internal storage. Rise up to 1GB and problem solved. The same message error... Thanks!!Trickle
Works for me as well. Raise from 200MB!Classicism
G
10

try my answer https://mcmap.net/q/128629/-solving-install-error-dexopt

if you use android studio 2.0, DISABLE the instant run.

FYI, instant run is new feature from android studio 2.0 (i never used it >.<)

how to disable : preferences -> build, execution & deployment -> instant run -> disable, then works like magic

Enjoy!

Gynandromorph answered 21/1, 2016 at 8:22 Comment(1)
This was my issue when testing old APIs on an emulator. After changing this and a clean wipe of the emulator it worked!Metaphosphate
S
10

The only solution that worked for me to fixed this was to increase the VM's RAM to 4GB.

Sotted answered 17/8, 2019 at 10:48 Comment(0)
L
8

I needed to disable Instant Run to fix the issue. To disable Instant Run on OS X, go to Android Studio > Preferences > Build, Execution, Deployment > Instant Run then remove the tick from Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

Labefaction answered 4/2, 2016 at 21:1 Comment(1)
This worked for my dexopt error. Application failed to install. I tried these before I found this: adb kill-server adb start-server, restarting Android Studio, and Factory resetting my device.Outbrave
T
6

I had the same issue today with Android Studio on a new virtual device. It appeared I had downloaded the x86_64 image, recreating the VD with the equivalent x86 image fixed it.

I expected to get a INSTALL_FAILED_NO_MATCHING_ABIS in this case but somehow I was stuck with INSTALL_FAILED_DEXOPT

Tensive answered 15/6, 2018 at 12:27 Comment(2)
For me it was the opposite. Attempting to install on x86 failed. After downloading the image and changing the emulator to x86_64 the error was gone. I used the API 21 system image.Thionate
The opposite worked for me as well. Tried everything on this thread before trying to use the x86_64 image instead of the x86 one. I was also using an API 21 AVD (Nexus 5).Kloster
A
5

I am working with Android Studio and had the same error.

Deleting the build folder of the main Modul helped. After deleting everything get back to normal.

Anh answered 14/10, 2014 at 7:50 Comment(0)
P
4

INSTALL_FAIL_DEXOPT usually has to do with the limit placed on classes.dex. On anything pre-ICS dexopt will fail on anything over 5 MB. Recent versions of Android use an 8 or 16 MB buffer.

Check the size of classes.dex in your APK. It would also be good to see what your method count is, as dex has a 65536 method/field limit.


References:

Error while installing application (INSTALL_FAILED_DEXOPT)

https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920

How to shrink code - 65k method limit in dex

Pennipennie answered 7/8, 2015 at 22:11 Comment(0)
C
4

verify the storage space on your device

Contradance answered 25/2, 2019 at 13:50 Comment(1)
This helps, I've increased my virtual device's ram and space, then problem solved.Handshaker
T
3

I ran into this problem after enabling the jumboMode flag in the build (dex.force.jumbo=true). Everything worked fine on newer Android devices, but installation failed on Gingerbread.

So if your app requires jumbo mode due to the annoying 65k restriction, try cutting some unused code/strings and setting jumbo mode back to false.

Thionate answered 24/6, 2014 at 8:49 Comment(2)
I also just enabled jumbo mode and started to see this when testing on old devices. Unfortunately reverting back to false didn't resolve the issue for me. Using proguard to shrink the APK did.Stephanestephani
We encountered the same issue, Jumbo Mode is not working with API 10Confidence
F
3

classes.dex does not make it to the final .apk. Running gradlew --offline clean && gradlew --offline assembleDebug fixed things for me every time. From that point you can start launching the app from Android Studio again.

EDIT: Before what I said above go to Task Manager and kill all cmd.exe and conhost.exe processes (or just the one in which aapt got stuck). Otherwise aapt would crash from now on when launched from command line with the infamous error -1073741819.

Flemming answered 1/10, 2014 at 12:4 Comment(8)
Appreciated :D worth mentioning that the newest build tools (2.1.1) and gradle plugin (1.0.0-rc1) work like a charmFlemming
Well I don't know about that, I just installed android studio 1.0 and had to do this to get it to work.Geldens
Try killing all java.exe too. How much RAM do you have? Make absolutely sure you have the latest version of the following: Android Studio 1.0.0-rc4, gradle android plugin 1.0.0-rc1, build tools 21.1.1. I haven't seen the error for some time now.Flemming
Build tools are 21.1.1, android studio is 1.0, and I don't know how to find the gradle plugin version. I just downloaded the 1.0 release that appeared yesterday on the android developers site...Geldens
Look in your root project build.gradle file. Among buildscript dependencies there should be classpath 'com.android.tools.build:gradle:1.0.0-rc4'.Flemming
It's just 1.0.0. If I try to add -rc4, I get this error: You must use a newer version of the Android Gradle plugin. The minimum supported version is 1.0.0 and the recommended version is 1.0.0. Not all versions of the Android Gradle plugin are compatible with all versions of the SDK. If you update your tools, or if you are trying to open a project that was built with an old version of the tools, you may need to update your plugin version number.Geldens
Rc means Release Candidate. Two days ago was released a full baked version. Just delete the -rc1.Flemming
Meh, I give up. I tried everything short of reinstalling Windows. Maybe I'll try again when Windows 10 launches.Geldens
P
3

I got the same error and fixed it by increasing the size of internal storage.

The internal storage was initially set to 32MB(I know) and then I installed a couple of apks on it, which had left less space than what was needed for the one to be installed.

Pleinair answered 5/12, 2014 at 4:37 Comment(0)
M
2

I had the app uninstalled and got the INSTALL_FAILED_DEXOPT error nevertheless. If you are working with Android Studio / gradle: gradle clean did the trick for me, Cheers.

Magyar answered 7/11, 2014 at 12:24 Comment(1)
I had to use gradlew, but hey it worked! thanks (also removed the package in data/data)Stelu
M
2

in build.gradle change compiled and build to latest version. and it worked for me.

================

android {
    compileSdkVersion 22
    buildToolsVersion "22"
Memling answered 18/3, 2015 at 18:25 Comment(0)
C
2

I found there's one reason for this problem: not enough space on mobile. So I delete several APP from mobile and it's fixed.

Cavalry answered 23/6, 2018 at 10:11 Comment(0)
T
2

a lot of answers here, but maybe it can help someone I had this issue with real device and problem was with D8

try to add this to your gradle.properties and it works for me

android.enableD8=false
android.enableD8.desugaring= false
Triplet answered 7/2, 2020 at 8:26 Comment(0)
G
1

I was getting this issue when trying to install on 2.3 devices (fine on 4.0.3). It ended up being due to a lib project i was using had multiple jars which were for stuff already in android e.g. HttpClient and XML parsers etc. Looking at logcat led me to find this as it was telling me it was skipping classes due to them already being present. Nice unhelpful original error there!

Glandulous answered 18/10, 2013 at 11:31 Comment(2)
I have the same problem can you explain how did you cleared that issue . I Have libs size more than 7 mb so its not allow me to install in the earlier device like 2.3.Earwax
In my case, I was using gradle build to create apk and the culprit was bouncy-castle provider jar. I had to exclude module 'bcprov-jdk' in root project's compile dependencies.Outfielder
A
1

I had this error testing on a real device. Clearing cache/uninstalling, restarting everything didn't work for me, deleting the contents of the build folder did :) (Android studio)

Antiar answered 8/5, 2014 at 10:39 Comment(0)
I
1

There's no generic solution, you have to find the error reported on your Logcat to be able to figure it out. Sometimes it's a class that can't be 'dexed' due to an usage of a class not available on the specified Target API for instance. Or it could be a class that you're making reference in your code, but the library that it is in is not being packaged.

Inky answered 13/8, 2014 at 20:5 Comment(0)
S
1

Consider using proguard to shrink your APK. I have the same issue if I try to install a large 25MB+ APK on an old Samsung Galaxy Ace 2.3.6 device without shrinking/optimizing code with proguard.

Jumbo mode and restarting the device is not working.

Stephanestephani answered 1/10, 2014 at 8:42 Comment(0)
L
1

In my case, this was a bug in kotlin plugin, version 1.1.51

https://youtrack.jetbrains.com/issue/KT-20034

This error appeared on old devices (API 16).

Fixed this by removing @Parcelize annotations and replacing them with this code generator: https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin

Lathrop answered 20/10, 2017 at 8:18 Comment(0)
H
1

targetSdkVersion 22//17==========================> set this number less then or equal to the version of Android OS on devices might help

 defaultConfig {
        applicationId "software.nhut.personalutilitiesforlife"
        minSdkVersion 16
        targetSdkVersion 22//17==========================> set this number less then or equal to the version of Android OS on devices might help
        versionCode 5
        versionName "1.26"
        // Enabling multidex support.
        multiDexEnabled true
    }
Henslowe answered 6/9, 2018 at 14:1 Comment(0)
B
1

In my case problem was happening on some devices running API 21 and 22. Setting android:vmSafeMode="true" in manifest under application tag resolved the issue. However, it is not recommended for release builds, so I created two xml files in values folder. The default one for older API's:

<resources>
    <bool name="vm_safe_mode">true</bool>
</resources>

And the same for API's >= 23 with false value. In that case devices with newer OS won't be affected and the old ones will at least work.

Bernard answered 29/6, 2020 at 10:35 Comment(1)
Very useful! it is works after add "vmSafeMode=true" to applicationFarmhand
D
0

I had this problem when there were some Unicode characters in my method names (due to, of all things, copy/pasting from a powerpoint file) that Dalvik did not like. You can see this by looking at Logcat output while trying to install the APK.

This was on a real device.

Danish answered 26/6, 2013 at 7:30 Comment(0)
L
0

Solved by correcting date time on the phone (it was some default date 01.01.1980), and cleaning the project.

Lexicologist answered 14/10, 2014 at 15:8 Comment(0)
S
0

I had changed my version of android version 4 support for sdk 21 and had this error. So I went back the version of support for the old version (before 21) and it worked. The error was occurring only in android 2.3

Selfhelp answered 4/11, 2014 at 0:50 Comment(0)
C
0

I've ran into this problem when I was trying to update new build tools 24.0.1. Internet connection was lost and tools was not downloaded successfully, after that I got this error and spent a lot of time trying to solve it. But when I succesfully updated build tools - problem solved. Good luck.

Cheffetz answered 16/12, 2014 at 22:51 Comment(0)
B
0

Make sure you have all the SDK's you need installed and Gradle is targeting the right version.

I was having the same issue, but it was caused by me updating my device to Android 5.0 and then forgetting to change all my builds to target it.

Beene answered 20/1, 2015 at 16:41 Comment(0)
K
0

I have faced this issue because there was some mismatch with the libraries i was using

Resolved by updaing android sdk to latest. Check SDK manager if it shows update then fully update, clean your project and then run, it will work :)

Kasher answered 6/7, 2015 at 12:59 Comment(0)
A
0

Maybe this will help:

  1. Wipe the user data before launching the emulator
  2. clean the project
  3. remove dependencies which are not required....
Allonge answered 12/9, 2015 at 18:29 Comment(0)
P
0

The error get resolved by deleting the build folder of your main app.It will recreate again.

Penrod answered 9/12, 2015 at 8:25 Comment(0)
T
0

In android Studio click on File -> Invalidate caches/ restart . This did the trick for me when I was getting this error when I got this error on device not emulator.

Towner answered 27/4, 2016 at 15:59 Comment(0)
M
0

For me it was proguard that was causing INSTALL_FAILED_DEXOPT on some Samsung devices with Android 5.x.

Namely I had to add this to proguard - not sure why it helped.

-keepattributes LocalVariableTable
Melioration answered 18/1, 2017 at 14:30 Comment(0)
K
0

Restart your device.

In my case, the app run in most devices except for one: a cellphone that was too old and had been failing lately, the app thrown this error even without having installed the app once.

Kohinoor answered 26/4, 2017 at 15:17 Comment(0)
T
0

Also if you are using ECLIPSE yet, try clean your project:

Project > Clean...

Topside answered 2/6, 2018 at 11:19 Comment(0)
R
0

One reason is that classes.dex is not found in the root of the .apk-package. Either

  • this file is missing in the apk-package or
  • it is located in a subfolder within the .apk file.

Both situations cause the termination because Android supposedly searches only in the root of the apk file. The confusion is because the build run of the .apk file was without an error message.

Core reasons for that error may be:

  • The dx tool need classes.dex in the current main working folder. But in reality classes.dex is located somewhere other.
  • aapt have a wrong information for the location for classes.dex. For example with aapt.exe add ... bin/classes.dex. Thats would be wrong because classes.dex is in a subfolder /bin of the created .apk file.
Ripley answered 22/2, 2020 at 15:7 Comment(0)
A
0

To anyone searching for this with keyword "Room". I met this problem while implementing Room to manage my database. The cause was that I copied all dependencies from Android documentation. Copy only the ones you need. If you are not using Kotlin nor Guava add only:

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
testImplementation "androidx.room:room-testing:$room_version"
Ayeaye answered 9/7, 2020 at 20:17 Comment(0)
B
0

I added the follow lines to the gradle.properties file and the problem was solved:

android.enableD8=false 
android.enableD8.desugaring= false

I'm running the app in a real device.

Bedroll answered 23/9, 2022 at 12:22 Comment(0)
S
-1

As this seems to be a problem I have myself encountered multiple times and this time none of the shared solutions helped me, I'll still post what helped me personally and what I believe may help someone else in future:

Go to your project's directory and find build/intermediates/dex-cache/cache file. Remove it - as name suggests, it's a cached dex file that may be outdated if you have made changes to your project's dependencies, build tools version etc.

Spindell answered 9/4, 2016 at 19:54 Comment(0)
C
-2

If you have error INSTALL_FAIL_DEXOPT, see in manifest android:targetSdkVersion. Set version < 21 sample:

android:targetSdkVersion="19"

This worked for me.

Charmain answered 11/4, 2016 at 13:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.