오류 : 요청한 클래스를 단일 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'


답변

그들이 당신에게 한 대답 중 어느 것도 철저하지 않았습니다. 문제는 Multidex에 있습니다. 앱 gradle에 라이브러리를 추가해야합니다.

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

그런 다음 앱 gradle의 defaultConfig를 추가하십시오.

multiDexEnabled true

응용 프로그램은 Multidex 유형이어야합니다. 매니페스트에 작성해야합니다.

android:name=".MyApplication"

“MyApplication”은 Multidex 클래스이거나 확장해야합니다.


답변

아래 솔루션으로 문제를 해결했습니다.

Gradle 빌드 파일에서 종속성을 추가하십시오.

구현 ‘com.android.support:multidex:1.0.3’

그런 다음 “defaultConfig”섹션에서 다음을 추가하십시오.

multiDexEnabled true


답변

앱 또는 모듈 수정 build.gradle

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

공식 문서에 따르면

Android 5.0 이상에 대한 멀티 덱스 지원

Android 5.0 (API 레벨 21) 이상은 APK 파일에서 여러 DEX 파일로드를 기본적으로 지원하는 ART라는 런타임을 사용합니다. ART는 앱 설치시 사전 컴파일을 수행하여 classesN.dex 파일을 스캔하고 Android 장치에서 실행할 수 있도록 단일 .oat 파일로 컴파일합니다. 따라서 minSdkVersion이 21 이상이면 멀티 덱스 지원 라이브러리가 필요하지 않습니다.

Android 5.0 런타임에 대한 자세한 정보는 ART 및 Dalvik을 읽으십시오.

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


답변

덱스 파일이란 무엇입니까? APK (Android 앱) 파일에는 Dalvik Executable (DEX) 파일 형식의 실행 가능한 바이트 코드 파일이 포함되어 있으며이 파일에는 앱을 실행하는 데 사용되는 컴파일 된 코드가 포함되어 있습니다.

이 예외의 이유 : DEX 사양은 단일 DEX 파일 내에서 참조 할 수있는 총 메서드 수를 65,536 (64K 참조 제한) (Android 프레임 워크 메서드, 라이브러리 메서드 및 사용자 고유 코드의 메서드 포함)으로 제한합니다.

단계 01. 다음과 같이 다음 종속성을 추가하십시오

Android가 아닌 사용자의 경우

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}
defaultConfig {
    minSdkVersion 16
    targetSdkVersion 28
    multiDexEnabled true  //ADD THIS LINE
}

Androidx 사용자의 경우

dependencies {
  implementation 'androidx.multidex:multidex:2.0.1'
}
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
        multiDexEnabled true  //ADD THIS LINE
    }

02 단계 :

해당 동기화 프로젝트를 추가 한 후 프로젝트를 실행하기 전에 실행 전에 프로젝트를 빌드하십시오. 그렇지 않으면 예외가 발생합니다.


답변

당신은 이것을 따를 수 있습니다 .

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
    }
    ...
}

답변

의존성을 사용할 때 메소드가 증가했습니다! 구글은 그에 대한 해결책을 가지고 있습니다. 그것은 Multidex라고 불렀습니다!

참고 : 최소 SDK가 14 이상인지 확인하십시오.

build.gradle에서 :

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}



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

androidX 사용의 경우 :

 def multidex_version = "2.0.1"
 implementation 'androidx.multidex:multidex:$multidex_version'

자세한 내용은 다음 링크를 참조하십시오 :

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


답변

안녕 문제는 여기 그것을 제거

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