Android 2.2 を使用して Android アプリケーションを開発しています。アプリケーションの APK サイズは 22.5 MB で、Samsung タブレット用の新しいビルドを作成したいと考えています。次のエラーが発生しました。
INSTALL_FAILED_DEXOPT
この種のエラーを解決するにはどうすればよいですか?
Android 2.2 を使用して Android アプリケーションを開発しています。アプリケーションの APK サイズは 22.5 MB で、Samsung タブレット用の新しいビルドを作成したいと考えています。次のエラーが発生しました。
INSTALL_FAILED_DEXOPT
この種のエラーを解決するにはどうすればよいですか?
からエミュレータを再起動しAndroid SDK and AVD Manager
てオプションを選択すると、Wipe User Data
この問題は解決しました。
以下の画像で強調表示されているオプションを見つけることができます。
インストールしている古いバージョンのアプリには、変更された依存ライブラリ/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)
エミュレーターのRAMサイズと内部ストレージ容量を変更しました今ITは機能しています... Eclipse AVDマネージャーで
問題を解決するには、Instant Run を無効にする必要がありました。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)
。
私は Android Studio を使用していますが、同じエラーが発生しました。
メインModulのビルドフォルダーを削除すると役立ちました。すべてを削除した後、通常に戻ります。
classes.dex
ファイナルに進まない.apk
。gradlew --offline clean && gradlew --offline assembleDebug
毎回私のために固定されたものを実行しています。その時点から、Android Studio からアプリの起動を再開できます。
編集:上記の前に、タスクマネージャーに移動して、すべてのプロセスcmd.exe
とconhost.exe
プロセス(またはaapt
スタックしたプロセスのみ)を強制終了します。そうaapt
しないと、悪名高いエラーでコマンドラインから起動したときにクラッシュします-1073741819
。
同じエラーが発生し、内部ストレージのサイズを増やすことで修正しました。
内部ストレージは最初は 32MB に設定されていましたが (私は知っています)、そこにいくつかの APK をインストールしました。
build.gradle でコンパイルを変更し、最新バージョンにビルドします。そしてそれは私のために働いた。
================
android {
compileSdkVersion 22
buildToolsVersion "22"
Proguard を使用して APK を縮小することを検討してください。proguard でコードを縮小/最適化せずに古い Samsung Galaxy Ace 2.3.6 デバイスに 25MB 以上の大きな APK をインストールしようとすると、同じ問題が発生します。
ジャンボ モードとデバイスの再起動が機能していません。
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.
2.3 デバイスにインストールしようとすると、この問題が発生しました (4.0.3 では問題ありません)。それは、私が使用していたlibプロジェクトが原因で、すでにAndroidにあるもの、たとえばHttpClientやXMLパーサーなどのための複数のjarがあったためでしたlogcat
。現在。役に立たない元のエラーがあります。
私の場合、API 21 および 22 を実行している一部のデバイスで問題が発生していました。android:vmSafeMode="true"
マニフェストでapplication
タグの下に設定すると、問題が解決しました。ただし、リリース ビルドでは推奨されないため、values フォルダーに 2 つの xml ファイルを作成しました。古い API のデフォルトのもの:
<resources>
<bool name="vm_safe_mode">true</bool>
</resources>
API の >= 23 with false
value についても同じです。その場合、新しい OS を搭載したデバイスは影響を受けず、古いものは少なくとも動作します。
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
}
メソッド名にいくつかの Unicode 文字が含まれていたときに (何よりも、パワーポイント ファイルからのコピー/貼り付けが原因で)、Dalvik が気に入らなかったときに、この問題が発生しました。これは、APK のインストール中に Logcat の出力を確認することで確認できます。
これは実際のデバイス上にありました。
Android Studio で File -> Invalidate caches/ restart をクリックします。エミュレータではなくデバイスでこのエラーが発生したときに、このエラーが発生したときに、これがうまくいきました。
たぶんこれが役立ちます:
SDK 21 の Android バージョン 4 サポートのバージョンを変更したところ、このエラーが発生しました。そのため、古いバージョン (21 より前) のサポートのバージョンに戻しましたが、動作しました。エラーはandroid 2.3でのみ発生していました
電話の日時を修正し (デフォルトの日付は 1980 年 1 月 1 日でした)、プロジェクトをクリーンアップすることで解決しました。
新しいビルド ツール 24.0.1 を更新しようとしたときに、この問題に遭遇しました。インターネット接続が失われ、ツールが正常にダウンロードされませんでした。その後、このエラーが発生し、解決に多くの時間を費やしました。しかし、ビルドツールを正常に更新すると、問題は解決しました。幸運を。
使用していたライブラリとの不一致があったため、この問題に直面しました
Android SDK を最新のものに更新することで解決しました。SDKマネージャーが更新を示しているかどうかを確認してから完全に更新し、プロジェクトをクリーンアップしてから実行すると、動作します:)
これは私自身が何度も遭遇した問題のようですが、今回は共有された解決策はどれも役に立ちませんでした。
プロジェクトのディレクトリに移動し、build/intermediates/dex-cache/cache ファイルを見つけます。削除してください - 名前が示すように、プロジェクトの依存関係やビルド ツールのバージョンなどに変更を加えた場合、古い可能性があるキャッシュされた dex ファイルです。
エラー INSTALL_FAIL_DEXOPT がある場合は、マニフェスト android:targetSdkVersion を参照してください。バージョン < 21 のサンプルを設定します。
アンドロイド:targetSdkVersion="19"
これは私にとってはうまくいきました。