Android 2.2を使用してAndroidアプリケーションを開発しています。アプリケーションAPKサイズは22.5 MBです。Samsungタブレット用の新しいビルドを作成したいと思います。次のエラーが表示されました。
INSTALL_FAILED_DEXOPT
この種のエラーを解決するにはどうすればよいですか?
Android SDK and AVD Manager
からエミュレーターを再起動し、オプションWipe User Data
を選択すると、この問題は解決しました。
以下の画像で強調表示されているオプションを見つけることができます。
これは私にとってディスクスペースに関連しているように見えました。新しくロールされた5.1エミュレータは、「ディスク領域が不足しています」というエラーで起動します。エミュレータのプロパティを見ると、内部ストレージに割り当てられているデフォルトの領域は800MBで、低いようです。
そのため、解決策はこれを増やすことでした(4GBにしました)。奇妙なことに、エミュレータはまだ同じディスク容量の警告で起動しますが、出荷時の状態にリセットする([設定]-> [エミュレータ内のバックアップと復元])ことで完全に解決しました。
デフォルト設定ではすぐに動作しないのは少し奇妙です。
インストールするアプリの古いバージョンには、変更された依存ライブラリ/ 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 Studioを使用している場合、プロジェクトをクリーンアップしてみてください:
ビルド>プロジェクトのクリーン
このエラーメッセージにはさまざまな原因が考えられます。私が出くわしたケースは実際のデバイスでした(したがって、エミュレーターベースのソリューションは適用されませんでした)。
基本的に、これが発生した場合、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)
私の答えを試してください https://stackoverflow.com/a/34918549/3737254
Android studio 2.0を使用する場合、インスタントランを無効にします。
参考までに、インスタントランはAndroid studio 2.0の新機能です(使用したことはありません>。<)
無効にする方法:設定->ビルド、実行および展開->インスタントラン->無効、その後魔法のように動作します
楽しい!
RAMサイズとエミュレーターの内部ストレージ容量を変更しましたNow IT IS Working ... Eclipse AVDマネージャー
この問題を解決するには、インスタントランを無効にする必要がありました。 OS Xでインスタントランを無効にするには、Android Studio> Preferences> Build、Execution、Deployment> Instant Runに移動します=その後、Enable Instant Run to hot swap code/resource changes on deploy (default enabled)
からティックを削除します。
Android Studio 3.4.1を使用しますが、古い(5.0)エミュレーターを使用します。 この手順 (Macの場合)問題を修正しました:
Android Studioを使用していますが、同じエラーが発生しました。
メインモジュールのビルドフォルダーを削除すると役立ちました。すべてを削除した後、通常に戻ります。
今日、新しい仮想デバイス上のAndroid Studioで同じ問題が発生しました。 x86_64
イメージをダウンロードし、同等のx86
イメージを修正してVDを再作成したようです。
この場合INSTALL_FAILED_NO_MATCHING_ABIS
を取得する予定でしたが、どういうわけかINSTALL_FAILED_DEXOPT
で動けなくなりました
INSTALL_FAIL_DEXOPTは通常、classes.dexに設定されている制限に関係しています。 ICSより前のdexoptでは、5 MBを超えると失敗します。 Androidの最近のバージョンは、8または16 MBのバッファーを使用します。
APKのclasses.dexのサイズを確認します。 dexには65536のメソッド/フィールド制限があるため、メソッドカウントが何であるかを確認することもできます。
参照:
デバイスのストレージ容量を確認します
classes.dex
は最終的な.apk
にはなりません。 gradlew --offline clean && gradlew --offline assembleDebug
を実行すると、毎回問題が修正されました。その時点から、Android Studioからアプリの起動を再開できます。
編集:上記で私が言ったことの前にタスクマネージャに行き、すべてのcmd.exe
およびconhost.exe
プロセス(またはaapt
がスタックしたプロセス)を強制終了します。そうしないと、悪名高いエラー-1073741819
でコマンドラインから起動したときに、aapt
がクラッシュします。
同じエラーが発生し、内部ストレージのサイズを増やして修正しました。
内部ストレージは最初は32MBに設定されていました(私は知っています)。その後、いくつかのapkをインストールしました。
ビルド(dex.force.jumbo=true
)でjumboModeフラグを有効にした後、この問題に遭遇しました。新しいAndroidデバイスではすべて正常に機能しましたが、Gingerbreadでのインストールは失敗しました。
迷惑な65kの制限のためにアプリでジャンボモードが必要な場合は、未使用のコード/文字列を切り取り、ジャンボモードをfalseに戻してみてください。
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
}
アプリをアンインストールしても、INSTALL_FAILED_DEXOPTエラーが発生しました。 Android Studio/gradleを使用している場合:gradle cleanは私のためにトリックを行いました、乾杯。
build.gradleでコンパイルされ、最新バージョンにビルドされます。そしてそれは私のために働いた。
================
Android {
compileSdkVersion 22
buildToolsVersion "22"
一般的な解決策はありません。Logcatで報告されたエラーを見つけて、それを把握する必要があります。たとえば、指定されたターゲットAPIで使用できないクラスの使用が原因で、「デックス」できないクラスです。または、コード内で参照しているクラスである可能性がありますが、それが含まれているライブラリはパッケージ化されていません。
2.3デバイスにインストールしようとすると、この問題が発生していました(4.0.3で問題ありません)。それは、私が使用していたlibプロジェクトがAndroidに既にあるもののための複数のjarを持っていたことによるものです。 HttpClientやXMLパーサーなど。logcat
を見ると、すでに存在しているためにクラスをスキップしていると言っていたので、これを見つけました。そこに役に立たない元のエラー!
この問題には1つの理由があることがわかりました。モバイルのスペースが足りません。そのため、モバイルからいくつかのAPPを削除し、修正しました。
Proguardを使用してAPKを縮小することを検討してください。 proguardでコードを縮小/最適化せずに、古いSamsung Galaxy Ace 2.3.6デバイスに大きな25MB以上のAPKをインストールしようとすると、同じ問題が発生します。
ジャンボモードとデバイスの再起動が機能しません。
私の場合、これはkotlinプラグイン、バージョン1.1.51のバグでした
https://youtrack.jetbrains.com/issue/KT-20034
このエラーは古いデバイス(API 16)で発生しました。
@Parcelizeアノテーションを削除し、このコードジェネレーターで置き換えることでこれを修正しました: https://github.com/nekocode/Android-parcelable-intellij-plugin-kotlin
実際のデバイスでこのエラーをテストしました。キャッシュのクリア/アンインストール、すべての再起動がうまくいかなかった、ビルドフォルダーの内容を削除した:)(Android studio)
メソッド名にUnicode文字が含まれていた場合(PowerPointファイルからのコピー/貼り付けのため)、Dalvikが気に入らなかったときにこの問題が発生しました。これを確認するには、APKをインストールする際にLogcatの出力を確認します。
これは実際のデバイス上にありました。
Android Studioで、[ファイル]-> [キャッシュの無効化/再起動]をクリックします。これは、エミュレーターではなくデバイスでこのエラーが発生したときにこのエラーが発生したときに、私のためにトリックをしました。
電話の日付時刻を修正して(デフォルトの日付は01.01.1980でした)、プロジェクトをクリーンアップすることで解決しました。
新しいビルドツール24.0.1を更新しようとしたときに、この問題に遭遇しました。インターネット接続が失われ、ツールが正常にダウンロードされませんでした。その後、このエラーが発生し、解決に多くの時間を費やしました。しかし、ビルドツールを正常に更新すると、問題は解決しました。幸運を。
たぶんこれが役立ちます:
私がこれを修正するために働いた唯一の解決策は、VMのRAMを4GBに増やすことでした。
Sdk 21のAndroidバージョン4サポートのバージョンを変更したところ、このエラーが発生しました。だから、私は古いバージョンのサポートのバージョン(21以前)に戻り、それが機能しました。エラーはAndroid 2.3でのみ発生していました
また、Eclipseをまだ使用している場合は、プロジェクトをきれいにしてみてください。
プロジェクト>クリーン...
私にとっては、Android 5.xを使用した一部のSamsungデバイスでINSTALL_FAILED_DEXOPTを引き起こしていたのはプロガードでした。
つまり、私はこれをプロガードに追加する必要がありました-なぜそれが助けたのか分かりません。
-keepattributes LocalVariableTable
これは私が何度も遭遇した問題のようであり、今回は共有された解決策のどれも私を助けてくれなかったので、私が個人的に助けたものと私が将来誰かに役立つと思うものをまだ投稿します:
プロジェクトのディレクトリに移動し、build/intermediates/dex-cache/cacheファイルを見つけます。それを削除します-名前が示すように、プロジェクトの依存関係、ビルドツールのバージョンなどに変更を加えた場合、古くなっている可能性のあるキャッシュされたdexファイルです。
必要なすべてのSDKをインストールし、Gradleが適切なバージョンをターゲットにしていることを確認してください。
私は同じ問題を抱えていましたが、デバイスをAndroid 5.0に更新し、それをターゲットにするためにすべてのビルドを変更するのを忘れたことが原因でした。
私が使用していたライブラリといくつかの不一致があったため、私はこの問題に直面しました
Android sdkを最新に更新することで解決します。更新が表示される場合はSDKマネージャーを確認し、完全に更新し、プロジェクトをクリーンアップして実行すると動作します:)
デバイスを再起動します。
私の場合、アプリは1つを除くほとんどのデバイスで実行されます。携帯電話が古すぎて最近失敗していたため、アプリを一度インストールしなくてもこのエラーがスローされました。
メインアプリのビルドフォルダーを削除すると、エラーが解決されます。再作成されます。