INSTALL_FAILED_DEXOPTエラーを解決するにはどうすればよいですか?


181

Android 2.2を使用してAndroidアプリケーションを開発しています。アプリケーションのAPKサイズは22.5 MBで、Samsungタブレット用の新しいビルドを作成したいと考えています。次のエラーが発生しました:

INSTALL_FAILED_DEXOPT

この種のエラーを解決するにはどうすればよいですか?


Samsungタブレット以外のデバイスにこのアプリケーションを正常にインストールできましたか?
テイト

1
インストールが失敗したときに生成されたlogcat出力に貼り付ける必要があります。
2011年

テスト中のデバイス(HTC Droid Eris)でも同じ問題が発生しました。以前にインストールしたバージョンのアプリを電話にインストールしましたが、アンインストールして再インストールしたところ、問題ありませんでした。
ninjasense 2011年

アプリのアンインストールと再インストールは常に機能します。ユーザーデータをワイプしたり、AVDを再作成したりすることは、すべて同じことをより時間のかかる方法で行うだけです。質問は、より良い、より速いオプションはありますか?
bschandramohan

7
@ChandraMohanそれは真実ではありません。それを真実にしようとするのをやめなさい。デバイスをフォーマットし、アプリを再インストールしようとしました。それでもこのエラーがスローされます!
Artiom Chilaru 2012年

回答:


99

からエミュレータを再起動してAndroid SDK and AVD Managerオプションを選択すると、Wipe User Dataこの問題は解決しました。

以下の画像で強調表示されているオプションを見つけることができます。

Androidエミュレータの起動時にユーザーデータをワイプオプション


17
それがエミュレーターではなく私の電話である場合はどうなりますか?
mtmurdock 2014

1
@mtmurdockしてみてくださいadb kill-serverそして、adb start-serverあなたの問題を解決する必要があります。古いアプリが存在する可能性があります。その後、最初にアンインストールしてください。
Vikas Patidar 2014

@mtmurdockおそらくお試しになりましたが、電話を再起動するとうまくいきました:)
Dunc

サーバーを強制終了してから起動できませんでした。エミュレータを再起動すると、データの消去が実際に機能します。
Shuvo 2018年

74

これは私にとってはディスク容量に関係しているようです。新しくロールバックされた5.1エミュレータが「ディスク容量不足」エラーで起動し、エミュレータのプロパティを見ると、内部ストレージに割り当てられているデフォルトの容量は800MBと少なく見えます。

解決策は、したがって、これを増やすことでした(私は4GBに行きました)。奇妙なことに、エミュレーターは同じディスク容量の警告で起動しますが、工場出荷時の状態にリセット(エミュレーター内の[設定]-> [バックアップと復元])で完全に解決しました。

デフォルト設定ではそのままでは機能しないのは少し奇妙です。


2
実際、これが私が抱えていた問題であり、電話の設定を介してリセットすることで、問題が解決しました。ありがとう!
ジャスティンスタンレー

1
ほとんどすべてを試みたが、何もこの1、感謝を除いて働いていない
shehzy

1
2時間後、私はこのコメントを見つけました-私の日を節約してくれてありがとう、働きました!
キリアンセラー

1
これにより、エミュレータでもINSTALL_FAILED_DEXOPTが発生しました。サイズを大きくしていましたが、設定に移動して出荷時の状態に戻す必要がありました。問題を修正しました。
Dave Thomas

キリスト...私のmac OSをアップデートした後、これは私に再び起こりました。そのソリューションの償還を倍増してgoto-> settingsを実行し、出荷時の状態に戻します。私がそれをどのように修正したかを思い出すためだけにこの質問を調べなければなりませんでした...スタックオーバーフローの歴史に神に感謝し、私のコメントを見つけることができました
デイブトーマス

17

インストールしている古いバージョンのアプリには、変更された依存ライブラリ/ jarがあります。アプリが参照している他のjarファイルを更新すると、この問題が発生しました。

古いバージョンをアンインストールする必要があるので、問題は発生しません...

[設定]-> [アプリケーション]-> [アプリケーションの管理]-> [アプリの検索とアンインストール]

INSTALL_FAILED_DEXOPTエラーは発生しません。お気に入り

[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!

うわー。


原因と結果に同意することができます。瓶をいじった後、私の場合にも同じ状況が起こりました。私にとってこれはAndroid 2.3のジンジャーブレッドベースのデバイスのみでした。ICSとLollipopは問題ありませんでした。
AlexVPerl 2015年

これはPlayストアにアップロードするときに問題になりますか?または、インストーラーはアプリを削除して再インストールしますか?
Eduardo Naveda

14

Android Studioを使用している場合は、プロジェクトをクリーンアップしてください。

ビルド>クリーンプロジェクト


12

このエラーメッセージにはさまざまな原因が考えられます。私が遭遇したケースは、実際のデバイス上にありました(そのため、エミュレーターベースのソリューションは適用されませんでした)。

基本的に、これが発生した場合は、LogcatフィルターをVerboseまたはWarnに設定します。これにより、原因に関する詳細情報を取得できます。

私の場合、私が取り組んでいるプロジェクト(大規模な既存のコードベース)にJUnitの複数のバージョンまたは競合するバージョンが含まれていました。デプロイしようとしたAndroidアプリには、依存関係としていくつかのライブラリプロジェクトがあり、誤って複数のJUnit jarファイルを含めるように設定していた。

一連のLogcatメッセージに基づいてこれを発見しました。WARN行が原因を示していることに注意してください。

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)

3
これは良い提案です。LogCatの出力を見て、実際のエラーメッセージを確認する必要があることに同意します。このエラーが発生したのは、デバイスの空き容量が少なく、APKを解凍できなかったためです。このエラーが発生する原因はいくつかあり、ユーザーデータのアンインストールやクリアが不要な場合があります。私はこれと同じ提案を、同様の(重複する)質問への回答として投稿しました。
ブライアンベダード

2
申し訳ありませんが、これは、Bryan Bedardが作成したのと同じ点です。スペースが足りません-通常、「スペース不足」のようなエラーが発生しますが、何らかの理由でこのDEXOPTエラーが発生しました。Logcatがエラーを示しましたZip inflate:write failed:No space left on device
mobibob 2013

12

Android Studio 3.4.1でこれに遭遇しましたが、古い(5.0)エミュレーターを使用しています。この手順(Macの場合)で問題が修正されました:

  1. エミュレータを停止する
  2. cd〜/ .android / avd / [エミュレータ名] .avd
  3. rm * .lock
  4. エミュレータをワイプ
  5. エミュレータを起動

3
エミュレータの内部ストレージを4GBに増やした後で上記のことを行うのは、私にとってうまくいった唯一のことです。
dell116

@ dell116この質問へのすべての異なる答えに基づいて、時には複数のことを行う必要があることには驚きません。
ケン

3
同意しました!そして、「Ken」というユーザー名をご利用いただき、ありがとうございます。
dell116

残念ながら、ワイプ/ストレージの増加/ワイピングの組み合わせのいずれも、私を助けませんでした。私はあきらめた。
缶Poyrazoğlu

1
@CanPoyrazoğlu—私もほとんどあきらめました。エミュレータは非常に敏感である必要があり、多くのことが原因で失敗する可能性があります(8年以上前に尋ねられた質問に対するここでのすべての異なる回答から明らかです)。私の場合、.lockファイルを削除することが重要でしたが、すべての問題を解決できない可能性のある場所を確実に確認できます。
ケン

11

エミュレーターのRAMサイズと内部ストレージ容量を変更しました。ITが機能しています...日食AVDマネージャーで


2
これにより、Android Studioの問題も解決されます。200Mbの内部ストレージしかありませんでした。最大1GBに上昇し、問題は解決しました。同じメッセージエラー...ありがとうございます!!
JoanCasadellà16年

私にも有効です。200MBから引き上げてください!
JohnyTex 2016年

10

私の答えを試してくださいhttps://stackoverflow.com/a/34918549/3737254

Android Studio 2.0を使用している場合は、インスタントランを無効にします。

ちなみに、インスタントランはAndroid Studio 2.0の新機能です(私は使用していません>。<)。

無効にする方法:設定->ビルド、実行、デプロイメント->即時実行->無効にすると、魔法のように動作します

楽しい!


これは、エミュレータで古いAPIをテストするときの私の問題でした。これを変更し、エミュレータをきれいに拭いた後、うまくいきました!
ベン

8

この問題を解決するには、インスタントランを無効にする必要がありました。OS XでInstant Runを無効にするには、 Android Studio > Preferences > Build、Execution、Deployment > Instant Runに移動し、からチェックを外しますEnable Instant Run to hot swap code/resource changes on deploy (default enabled)


これは私のために働いたdexopt error. Application failed to install。これを見つける前にadb kill-server adb start-server、Android Studioを再起動し、デバイスを出荷時設定にリセットしてみました。
シャーロック

7

私がこれを修正するために機能した唯一の解決策は、VMのRAMを4GBに増やすことでした。


6

今日、新しい仮想デバイスのAndroid Studioで同じ問題が発生しました。x86_64画像をダウンロードして、同等のVDを再作成したようですx86画像を修正してようです。

INSTALL_FAILED_NO_MATCHING_ABISはこの場合にを得ると思っていましたが、どういうわけか私は立ち往生していましたINSTALL_FAILED_DEXOPT


1
私にとってそれは正反対でした。へのインストールにx86失敗しました。画像をダウンロードしてエミュレータをx86_64エラーに変更した後、消えていました。API 21システムイメージを使用しました。
friederbluemle

逆も私のために働いた。x86_64イメージの代わりにイメージを使用する前に、このスレッドですべてを試しましたx86。API 21 AVD(Nexus 5)も使用していました。
レナンフェラーリ

5

Android Studioを使用していますが、同じエラーが発生しました。

メインModulのビルドフォルダーを削除すると役立ちました。すべてを削除した後、通常に戻ります。


4

INSTALL_FAIL_DEXOPTは通常、classes.dexに設定された制限に関係しています。ICS以前のdexoptでは、5 MBを超えると失敗します。最近のバージョンのAndroidでは、8 MBまたは16 MBのバッファーを使用しています。

APKのclasses.dexのサイズを確認してください。また、dexには65536のメソッド/フィールド制限があるため、メソッド数が何であるかを確認するのも良いでしょう。


参照:

アプリケーションのインストール中にエラーが発生しました(INSTALL_FAILED_DEXOPT)

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

コードを縮小する方法-dexでの65kメソッドの制限


3

ビルドでjumboModeフラグを有効にした後、この問題に遭遇しました(dex.force.jumbo=true)。新しいAndroidデバイスではすべてが正常に機能しましたが、Gingerbreadでのインストールは失敗しました。

したがって、厄介な65kの制限のためにアプリがジャンボモードを必要とする場合は、未使用のコード/文字列をいくつか切り取り、ジャンボモードをfalseに戻してみてください。


また、ジャンボモードを有効にしただけで、古いデバイスでテストしたときにこれが表示され始めました。残念ながらfalseに戻しても問題は解決しませんでした。プロガードを使用してAPKを縮小しました。
スロット14年

同じ問題が発生しました。ジャンボモードがAPI 10で動作していません
Henrique de Sousa '10

3

classes.dex確定にはなりません.apkgradlew --offline clean && gradlew --offline assembleDebug毎回私のために修正されたものを実行します。その後、Android Studioからアプリの起動を再開できます。

編集:私は、タスクマネージャに移動し、すべて殺す上記の言ったことをする前cmd.execonhost.exeプロセス(またはその中で一つだけaapt捕まってしまったが)。さもなければaapt、悪名高いエラーでコマンドラインから起動されたときにこれからクラッシュします-1073741819


最新のビルドツール(2.1.1)とGradleプラグイン(1.0.0-rc1)が魅力のように機能することに言及しておく価値があります
Eugen Pechanec 14

よくわかりませんが、android studio 1.0をインストールしただけで、動作させるためにこれを実行する必要がありました。
axnsan 2014

すべてのjava.exeも強制終了してみてください。RAMはどれくらいありますか?Android Studio 1.0.0-rc4、gradle android plugin 1.0.0-rc1、ビルドツール21.1.1の最新バージョンであることを確認してください。しばらくの間、エラーを確認していません。
Eugen Pechanec 14

ビルドツールは21.1.1、アンドロイドスタジオは1.0で、gradleプラグインのバージョンを確認する方法がわかりません。昨日Android開発者向けサイトに登場した1.0リリースをダウンロードしました...
axnsan

ルートプロジェクトbuild.gradleファイルを確認します。buildscriptの依存関係には、があるはずですclasspath 'com.android.tools.build:gradle:1.0.0-rc4'
Eugen Pechanec 2014

3

同じエラーが発生し、内部ストレージのサイズを増やすことで修正しました。

内部ストレージは最初は32MB(わかっています)に設定されていましたが、そこにいくつかのapkをインストールしました。



2

アプリをアンインストールしても、INSTALL_FAILED_DEXOPTエラーが発生しました。Android Studio / gradleを使用している場合:Gradle cleanが私にとってはうまくいきました、Cheers。


私はgradlewを使用しなければなりませんでしたが、ちょっとそれはうまくいきました!おかげで(データ/データのパッケージも削除されました)
Maxim Geerinck 2014年

2

build.gradleで変更をコンパイルして最新バージョンにビルドします。そしてそれは私のために働いた。

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

android {
    compileSdkVersion 22
    buildToolsVersion "22"

2

ここにはたくさんの答えがありますが、多分それは私が実際のデバイスでこの問題を抱えていた誰かを助けることができ、問題はD8でした

これをgradle.propertiesに追加してみてください、それは私のために機能します

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

1

2.3デバイスにインストールしようとすると、この問題が発生しました(4.0.3では問題ありません)。それは私が見てみるアンドロイドなどのHttpClientおよびXMLパーサなどですでにもののためだった持っていた複数のjarファイルを使用していたのlibプロジェクトに起因することになったlogcat、それがすでにあることにより、それらにクラスをスキップした私に言っていたとして、これを見つけるために私を導きましたプレゼント。役に立たない元のエラーがありました。


2
同じ問題がありますが、その問題をどのように解決したのですか?ライブラリのサイズが7 MBを超えているため、2.3などの以前のデバイスにインストールできません。
Rakkiの2014

私の場合、私はgradleビルドを使用してapkを作成しており、犯人は弾力性のあるキャッスルプロバイダーjarでした。ルートプロジェクトのコンパイル依存関係からモジュール 'bcprov-jdk'を除外する必要がありました。
Pawan、2014

1

実際のデバイスでこのエラーテストを行いました。キャッシュのクリア/アンインストール、すべての再起動は機能しませんでした。ビルドフォルダーの内容を削除すると、:)(Androidスタジオ)


1

一般的な解決策はありません。それを理解するには、Logcatで報告されたエラーを見つける必要があります。たとえば、指定されたターゲットAPIで利用できないクラスの使用が原因で、それを「デクス」できないクラスの場合があります。または、コードで参照しているクラスである可能性がありますが、それが含まれているライブラリはパッケージ化されていません。


1

プロガードを使用してAPKを圧縮することを検討してください。Proguardを使用してコードを縮小/最適化せずに、古いSamsung Galaxy Ace 2.3.6デバイスに大きな25MB + APKをインストールしようとすると、同じ問題が発生します。

ジャンボモードおよびデバイスの再起動が機能していません。



1

targetSdkVersion 22 // 17 ==========================>この数値をデバイスのAndroid OSのバージョン以下に設定すると役立つ場合があります

 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
    }

0

Dalvikが気に入らなかったメソッド名に(何よりも、PowerPointファイルからのコピー/貼り付けが原因で)Unicode文字が含まれていると、この問題が発生しました。APKをインストールしようとしているときにLogcatの出力を確認すると、これを確認できます。

これは実際のデバイス上にありました。


0

電話の日付時刻を修正し(デフォルトの日付は01.01.1980でした)、プロジェクトをクリーンアップしました。


0

私はsdk 21のAndroidバージョン4サポートのバージョンを変更し、このエラーが発生しました。したがって、私は古いバージョン(21より前)のサポートのバージョンに戻り、それは機能しました。エラーはAndroid 2.3でのみ発生していました


0

新しいビルドツール24.0.1を更新しようとしたときに、この問題に遭遇しました。インターネット接続が失われ、ツールが正常にダウンロードされなかった後、このエラーが発生し、解決に多くの時間を費やしました。しかし、私が正常にビルドツールを更新した場合-問題は解決しました。幸運を。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.