web-dev-qa-db-ja.com

エラー:要求されたクラスを単一のdexファイルに収めることはできません。main-dexリストを指定してみてください。 #メソッド:72477> 65536

融合位置情報サービスを追加したいのですが、エラーが表示されます。助けて。

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 26
    buildToolsVersion "27.0.1"
    defaultConfig {
        applicationId "com.example.adil.bloodbankapplication"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.Android.support:appcompat-v7:26.1.0'
    compile 'com.Android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-auth:11.8.0'
    compile 'com.google.firebase:firebase-database:11.8.0'
    compile 'com.Android.support:support-v4:26.1.0'
    compile 'junit:junit:4.12'
    compile 'com.Android.support:design:26.1.0'
    compile 'com.github.joielechong:countrycodepicker:2.1.5'
    compile 'com.jaredrummler:material-spinner:1.2.4'
    compile 'hanks.xyz:htextview-library:0.1.5'
    compile 'com.firebaseui:firebase-ui-database:1.2.0'
    compile 'com.google.Android.gms:play-services:11.8.0'
}


apply plugin: 'com.google.gms.google-services'
119

彼らがあなたに与えた答えのどれもが網羅的ではありませんでした。問題はMultidexにあります。あなたはアプリgradleにライブラリを追加しなければなりません:

implementation 'com.Android.support:multidex:1.0.3'

その後、アプリgradleのdefaultConfigを追加します。

multiDexEnabled true

あなたのアプリケーションはMultidex型でなければなりません..あなたはそれをマニフェストに書かなければなりません:

Android:name=".MyApplication"

"MyApplication"はMultidexクラスであるか、それを拡張する必要があります。

152
AlexPad

私は以下の解決策で私の問題を修正しました:

Gradleビルドファイルに依存関係を追加します。

実装 'com.Android.support:multidex:1.0.3'

そして、 "defaultConfig"セクションに、以下を追加します。

multiDexEnabled true

83
Bofeng

アプリまたはモジュールのbuild.gradleを修正する

Android {
    defaultConfig {
        ...
        minSdkVersion 21 <----- *here
        targetSdkVersion 26
        multiDexEnabled true <------ *here
    }
    ...
}

公式文書によると

Android 5.0以降のマルチインデックスサポート

Android 5.0(APIレベル21)以降では、ARTと呼ばれるランタイムを使用します。これは、APKファイルからの複数のDEXファイルのロードをネイティブでサポートしています。 ARTはアプリのインストール時にプリコンパイルを実行します。これは、classesN.dexファイルをスキャンし、それらをAndroidデバイスで実行するための単一の.oatファイルにコンパイルします。したがって、minSdkVersionが21以上の場合は、マルチインデックスサポートライブラリは必要ありません

Android 5.0ランタイムの詳細については、ARTとDalvikを読んでください。

https://developer.Android.com/studio/build/multidex

47
wdanxna

これ に従うことができます。

Android 5.0(APIレベル21)より前のバージョンのプラットフォームは、アプリコードの実行にDalvikランタイムを使用します。デフォルトでは、DalvikはアプリをAPKごとに単一のclasses.dexバイトコードファイルに制限します。この制限を回避するために、マルチデックスサポートライブラリをプロジェクトに追加することができます。

dependencies {
  implementation 'com.Android.support:multidex:1.0.3'
}

MinSdkVersionが21以上に設定されている場合は、次に示すように、モジュールレベルのbuild.gradleファイルでmultiDexEnabledをtrueに設定するだけです。

Android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}
30
rize

こんにちは問題はここにそれを削除します

compile 'com.google.Android.gms:play-services:11.8.0'

どうして?

注: 結合プレイサービスターゲットを使用しないでください。それはあなたのアプリケーションを膨らませ、たくさんのライブラリをもたらします。代わりに、アプリが使用する特定のGoogle PlayサービスAPIのみを指定してください。

そしてあなたが必要とするものを使用してください。 https://developers.google.com/Android/guides/setup

位置情報サービスのように

com.google.Android.gms:play-services-location:11.8.0

クラウドメッセージングの場合

com.google.Android.gms:play-services-gcm:11.8.0
18

DEBUG APK を構築している場合は、以下を追加してください。

debug {
            multiDexEnabled true
        }

buildTypesの中

RELEASE APK を構築している場合は、リリースブロックにmultiDexEnabled trueを追加します。

release {
                ...
                multiDexEnabled true
                ...
        }
13
Raj Yadav

Gradleビルドファイルに依存関係を追加します。

implementation 'com.Android.support:multidex:1.0.2'

または

implementation 'com.Android.support:multidex:1.0.3'

または

implementation 'com.Android.support:multidex:2.0.0'

そして、 "defaultConfig"セクションに、以下を追加します。

multiDexEnabled true

TargetSdkVersionの下

   minSdkVersion 17
    targetSdkVersion 27
    multiDexEnabled true

このエラーが発生した場合

エラー:解決に失敗しました:multidex-instrumentation Open File

あなたは3.0.1にあなたのgradleを変える必要があります

        classpath 'com.Android.tools.build:gradle:3.0.1'

そして、次のコードをファイルgradle-wrapper.propertiesに入れてください。

distributionUrl = https://services.gradle.org/distributions/gradle-4.1-all.Zip

最後に

プロジェクトにApplitionクラスを追加し、MultiDexApplicationから拡張されたAndroidManifestにそれを導入します。

public class App extends MultiDexApplication {

@Override
public void onCreate( ) {
    super.onCreate( );
}

}

最初にプロジェクトを実行してエラーを作成し、次にプロジェクトを消去します

最後に、プロジェクトを再起動して楽しんでください。

8
younes

メソッドの数が多すぎます。 Androidのdexファイルには65536メソッドの制限があります。

初心者のために、もしあなたがすべてのグーグルプレイサービスAPIとただ場所を必要としないならば、取り替えなさい

compile 'com.google.Android.gms:play-services:11.8.0'

compile 'com.google.Android.gms:play-services-location:11.8.0'

あなたはそれを避ける方法について、またはもっと許可する必要があるならこのページを参照することができます: https://developer.Android.com/studio/build/multidex.html

8
Raz

ProguardでminifyEnabledを使用している場合、マルチデックスを有効にする必要はないでしょう。 MGデベロッパーには、可能であればマルチデックスを避けるようにすべきだということに同意します。私の解決策は、デバッグビルドに対してのみマルチデックスを有効にすることでした。 minifyEnabledはリリースビルドの問題を解決します

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
    }
    debug {
        // getting error: Cannot fit requested classes in a single dex file.  # methods: 65537 > 65536
        // https://developer.Android.com/studio/build/multidex
        // minifyEnabled true (used with release) will fix this by getting rid of unused method calls, but this will hide debugging info on crash
        multiDexEnabled true
    }
}
6
Ernie Thomason

File> Project Structure> App> FlavorsでMinimum SDK Versionを21に設定するだけで済みました。

6
Will Buffington

私はなぜかわからない、おそらくそれは私がKotlinで開発したためであるが、このエラーを修正するために私はついにこのようにMultiDexApplicationを拡張するクラスを作成しなければならない:

class MyApplication : MultiDexApplication() {
}

そして私のManifest.xmlで私は設定しなければなりません

<application
        ...
        Android:name=".MyApplication">

混同しないように、私もします。

multiDexEnabled true
implementation 'com.Android.support:multidex:1.0.3'

androidxの場合、これも私のために働く:

implementation 'androidx.multidex:multidex:2.0.0'

...

<application Android:name="Android.support.multidex.MultiDexApplication">

私のために働かない

6
Boe-Dev
multiDexEnabled true

あなたのアプリdefaultConfig {}にこれを追加してみてください。これは私が問題を解決するのに役立ちます

5
user2173696

次のようにしてください。

build.gradle

(module:app)

Android {
        ....
        multiDexEnabled 'true' <== Enter code here
    }

そして

dependencies {
    implementation 'com.Android.support:multidex:1.0.3'
} 
5
Saif Khan

私は二度このエラーに遭遇しましたそしてこれに対する解決策はです;ターゲットSDKが20以上の場合は、アプリのグラドルファイルを確認し、defaultconfig { multiDexEnabled true }に1行追加します。

そうでない場合、あなたのtargetSDKが20未満であれば、あなたのdefaultConfigにその行を追加し、また依存関係を追加する

implementation 'com.Android.support:multidex:1.0.3'.

詳しくはこのリンクをチェックしてください。

https://developer.Android.com/studio/build/multidex#mdex-gradle

4
Mpwanyi Samuel

Multidexサポートの使用は最後の手段です。デフォルトでは、gradleビルドはAPKの推移的な依存関係を大量に収集します。 Google Developers Docs で推奨されているように、まずプロジェクトから不要な依存関係を削除しようとします。

コマンドラインを使用して、Android Projects Rootに移動します。次のようにして、コンパイルの依存関係ツリーを取得できます。

gradlew app:dependencies --configuration debugCompileClasspath

依存関係ツリーの完全なリストを取得できます

gradlew app:dependencies

enter image description here

次に、アプリのbuild.gradleから不要なまたは推移的な依存関係を削除します。たとえば、アプリで「com.google.api-client」という依存関係を使用している場合は、不要なライブラリ/モジュールを除外できます。

implementation ('com.google.api-client:google-api-client-Android:1.28.0'){
   exclude group: 'org.Apache.httpcomponents'
   exclude group: 'com.google.guava'
   exclude group: 'com.fasterxml.jackson.core'
   }

次に、Android St​​udioで[ビルド]> [APKの分析...]を選択します。リリース/デバッグAPKファイルを選択して内容を表示します。これにより、メソッドと参照カウントが次のようになります。

Analyze APK

2
MG Developer

フラッタープロジェクトの場合は、この問題も解決できます

\ Android\app\build.gradleを開きます

次のものが必要です。

Android {
    defaultConfig {
        ...
        minSdkVersion 16
        targetSdkVersion 28

    }

}

MinSdkVersionが21以上に設定されている場合は、defaultConfigでmultiDexEnabledをtrueに設定するだけです。このような

Android {
    defaultConfig {
        ...
        minSdkVersion 16
        targetSdkVersion 28
        multiDexEnabled true 

    }

}

minSdkVersionが20以下に設定されている場合、defaultConfigにmultiDexEnabled trueを追加します

そして実装を定義する

dependencies {
  implementation 'com.Android.support:multidex:1.0.3'
}

最後に次のものが必要です。

Android {
    defaultConfig {
        ...
        minSdkVersion 16
        targetSdkVersion 28
        multiDexEnabled true  // added this
    }

}

dependencies {
  implementation 'com.Android.support:multidex:1.0.3'
}

詳細については、これをお読みください: https://developer.Android.com/studio/build/multidex

2
Richardd

ビルド中:app

apply plugin: 'com.Android.application'
Android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.proyecto.marketdillo"
    minSdkVersion 14
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.Android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
implementation 'com.Android.support:support-v4:28.0.0-rc02'
implementation 'com.Android.support:design:28.0.0-rc02'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-firestore:17.1.5'
implementation 'com.Android.support:multidex:1.0.3'
}
apply plugin: 'com.google.gms.google-services'
2
Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.dev.khamsat"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "2.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
0
Mohamed Slimane