web-dev-qa-db-ja.com

INSTALL_FAILED_DEXOPTエラーAndroid 5.0リリースモード)

INSTALL_FAILED_DEXOPTに奇妙な問題があります。これは、エミュレータとデバイスのAndroid 5.0デバイスで発生します。奇妙なことに、デバッグモードでバリアントをビルドするとうまく機能します。

リリースに変更すると、5.0デバイスでのみこの例外が発生します。私はグーグルで利用可能なすべてのリンクを徹底的に調べました。

  1. データをワイプする

  2. 初めてインストールできる新しいデバイスを購入しましたが、それでも同じ問題に直面しています。

  3. プロジェクトはmultidexをサポートしています:-gradleでtrue

  4. また、SDKツールのバージョンとビルドツールのバージョンを最新の24.4.0に変更してみました。

私はこのデバイスを使用しています enter image description here

リリースモードでビルドすると、このエラーが発生します enter image description here

コンソールで

enter image description here

これらは、私たちが使用するビルドタイプです。

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-project.txt'
        signingConfig signingConfigs.release
    }


    debug {
        applicationIdSuffix ".debug"
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-project.txt'
        signingConfig signingConfigs.debug
    }


}

使用したSDKツールの画像:

enter image description here デバイスにビルドがインストールされたことは一度もないことを保証できます。すでにインストールされている場合は、すべてクリアしました。

この世界の誰かがこの問題で私を助けることができますか?それは私たちを夢中にさせるからです.....

33
Rockin

apkをAndroidにインストールする場合、Android最適化のためにdex2optを実行します。INSTALL_FAILED_DEXOPTエラーメッセージは、Androidデバイスがdexを最適化できないことを意味します。これは、dexサイズによって発生する可能性があります。「LinearAllocLimit」の警告またはエラーメッセージは、Androidモニターにあります。

それがdexサイズの問題である場合。これを設定に追加します。

afterEvaluate{
tasks.matching {
    it.name.startsWith('dex')
}.each { dx ->
    if(dx.additionalParameters == null){
        dx.additionalParameters = []
    }
    //To avoid linearAlloc limit problem on Gingerbread and below
     dx.additionalParameters += "--set-max-idx-number=50000"
     dx.additionalParameters += "--minimal-main-dex"
}

}

およびインスタント実行=オンからオフ

2
hanbumpark

お使いの携帯電話のゲストアカウントにアプリが誤ってインストールされていないか確認してください。

はいの場合は、そこからアンインストールまたは削除します。

お使いの携帯電話のすべてのユーザーアカウントに対してこれを行います。

追加のヒント:-

ビルド->プロジェクトのクリーンアップビルド->プロジェクトの再構築

0
penta

Multidexが問題のようです。 AndroidはこれをLollipopデバイスでネイティブに処理します(一部のデバイスは正しく動作しますが、他のデバイスは問題があります)が、古いデバイスでmultidexライブラリを使用するため、古いデバイスが均一に動作する理由を説明できます( http://developer.Android.com/tools/building/multidex.html )。

ProGuardを使用したり、multidexを必要としないように依存関係の1つを一時的に削除したりできるように、65kの制限に十分に近づいていますか?それをサポートするライブラリがありますが、それを必要としないようにメソッド数を減らすことは一般的に良い考えです。一部のアプリが本当にそれを必要とするかもしれないことを私は知っていますが、最初にこれをチェックする価値があります。

また、きめ細かいGooglePlay開発者サービスモジュールを使用して調査します。すべてのGMSを取り込む場合、きめ細かいインクルードに切り替えると、メソッド数を大幅に減らすことができます: http://Android-developers.blogspot.com/2014/12/google-play-services-and-dex -method.html

0

これは、モジュールとプロジェクトのビルドファイルにあるGradleビルドツールのバージョンが異なることが原因である可能性があります。両方のファイルで同じバージョンを使用していることを確認し、クリーンアップして再度ビルドすると、問題がないはずです。

0
C.Allan

この問題は、Android Studioとプロジェクトの間のSDKの不一致が原因で発生する可能性があります。プロジェクトは古いSDKを使用していたので、同じにした後、プロジェクトをクリーンアップして再構築しました。行く。

0
Murali Kumar

このアプリ、およびデバイスに署名がある他のすべてのアプリをアンインストールしてみてください。プロジェクトをクリーンアップして、インストールを再開します。また、Dropboxを使用するなど、別の手段でアプリをインストールすることを検討する必要があります。

0
user1782565