web-dev-qa-db-ja.com

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

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

INSTALL_FAILED_DEXOPT

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

147
john

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

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

Wipe User Data option when starting Android emulator

82
Vikas Patidar

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

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

デフォルト設定ではすぐに動作しないのは少し奇妙です。

25
HughHughTeotl

インストールするアプリの古いバージョンには、変更された依存ライブラリ/ 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!

おっと。

17
Lenn Dolling

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

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

15
SandroMarques

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

基本的に、これが発生した場合、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)
11
wsanville

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

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

参考までに、インスタントランはAndroid studio 2.0の新機能です(使用したことはありません>。<)

無効にする方法:設定->ビルド、実行および展開->インスタントラン->無効、その後魔法のように動作します

楽しい!

10
yfsx

RAMサイズとエミュレーターの内部ストレージ容量を変更しましたNow IT IS Working ... Eclipse AVDマネージャー

9
KATJ Srinath

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

8
iamkaan

Android St​​udio 3.4.1を使用しますが、古い(5.0)エミュレーターを使用します。 この手順 (Macの場合)問題を修正しました:

  1. エミュレーターを停止する
  2. cd〜/ .Android/avd/[エミュレータ名] .avd
  3. rm * .lock
  4. エミュレータを拭く
  5. エミュレータを起動
7
Ken

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

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

5
Informatic0re

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

この場合INSTALL_FAILED_NO_MATCHING_ABISを取得する予定でしたが、どういうわけかINSTALL_FAILED_DEXOPTで動けなくなりました

4
dvkch

INSTALL_FAIL_DEXOPTは通常、classes.dexに設定されている制限に関係しています。 ICSより前のdexoptでは、5 MBを超えると失敗します。 Androidの最近のバージョンは、8または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/1015134559779892

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

4
Jared Rummler

デバイスのストレージ容量を確認します

3
Farido mastr

classes.dexは最終的な.apkにはなりません。 gradlew --offline clean && gradlew --offline assembleDebugを実行すると、毎回問題が修正されました。その時点から、Android St​​udioからアプリの起動を再開できます。

編集:上記で私が言ったことの前にタスクマネージャに行き、すべてのcmd.exeおよびconhost.exeプロセス(またはaaptがスタックしたプロセス)を強制終了します。そうしないと、悪名高いエラー-1073741819でコマンドラインから起動したときに、aaptがクラッシュします。

3
Eugen Pechanec

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

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

3
binRAIN

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

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

3
friederbluemle

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
    }
2
Thunder knight

アプリをアンインストールしても、INSTALL_FAILED_DEXOPTエラーが発生しました。 Android St​​udio/gradleを使用している場合:gradle cleanは私のためにトリックを行いました、乾杯。

2
JacksOnF1re

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

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

Android {
    compileSdkVersion 22
    buildToolsVersion "22"
2
riseres

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

1

2.3デバイスにインストールしようとすると、この問題が発生していました(4.0.3で問題ありません)。それは、私が使用していたlibプロジェクトがAndroidに既にあるもののための複数のjarを持っていたことによるものです。 HttpClientやXMLパーサーなど。logcatを見ると、すでに存在しているためにクラスをスキップしていると言っていたので、これを見つけました。そこに役に立たない元のエラー!

1
Dori

この問題には1つの理由があることがわかりました。モバイルのスペースが足りません。そのため、モバイルからいくつかのAPPを削除し、修正しました。

1
Jalon Ray

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

ジャンボモードとデバイスの再起動が機能しません。

1
slott

私の場合、これはkotlinプラグイン、バージョン1.1.51のバグでした

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

このエラーは古いデバイス(API 16)で発生しました。

@Parcelizeアノテーションを削除し、このコードジェネレーターで置き換えることでこれを修正しました: https://github.com/nekocode/Android-parcelable-intellij-plugin-kotlin

1
stillwaiting

実際のデバイスでこのエラーをテストしました。キャッシュのクリア/アンインストール、すべての再起動がうまくいかなかった、ビルドフォルダーの内容を削除した:)(Android studio)

1
Gyroscope

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

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

0
thoutbeckers

Android St​​udioで、[ファイル]-> [キャッシュの無効化/再起動]をクリックします。これは、エミュレーターではなくデバイスでこのエラーが発生したときにこのエラーが発生したときに、私のためにトリックをしました。

0
Amro elaswar

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

0
No Name

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

0

たぶんこれが役立ちます:

  1. エミュレーターを起動する前にユーザーデータを消去する
  2. プロジェクトをきれいにする
  3. 不要な依存関係を削除してください。
0
Rajat Sawant

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

0
Jim

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

0
Cícero Moura

また、Eclipseをまだ使用している場合は、プロジェクトをきれいにしてみてください。

プロジェクト>クリーン...

0
Adamz

私にとっては、Android 5.xを使用した一部のSamsungデバイスでINSTALL_FAILED_DEXOPTを引き起こしていたのはプロガードでした。

つまり、私はこれをプロガードに追加する必要がありました-なぜそれが助けたのか分かりません。

-keepattributes LocalVariableTable
0
Martin Rajniak

これは私が何度も遭遇した問題のようであり、今回は共有された解決策のどれも私を助けてくれなかったので、私が個人的に助けたものと私が将来誰かに役立つと思うものをまだ投稿します:

プロジェクトのディレクトリに移動し、build/intermediates/dex-cache/cacheファイルを見つけます。それを削除します-名前が示すように、プロジェクトの依存関係、ビルドツールのバージョンなどに変更を加えた場合、古くなっている可能性のあるキャッシュされたdexファイルです。

0
Sosoel

必要なすべてのSDKをインストールし、Gradleが適切なバージョンをターゲットにしていることを確認してください。

私は同じ問題を抱えていましたが、デバイスをAndroid 5.0に更新し、それをターゲットにするためにすべてのビルドを変更するのを忘れたことが原因でした。

0
user4474925

私が使用していたライブラリといくつかの不一致があったため、私はこの問題に直面しました

Android sdkを最新に更新することで解決します。更新が表示される場合はSDKマネージャーを確認し、完全に更新し、プロジェクトをクリーンアップして実行すると動作します:)

0
Sonali8890

デバイスを再起動します。

私の場合、アプリは1つを除くほとんどのデバイスで実行されます。携帯電話が古すぎて最近失敗していたため、アプリを一度インストールしなくてもこのエラーがスローされました。

0
karenms

メインアプリのビルドフォルダーを削除すると、エラーが解決されます。再作成されます。

0
Prateek