Не удается разместить запрошенные классы в одном файле dex. ОШИБКА При добавлении библиотеки объявлений Google Play в Gradle. - PullRequest
0 голосов
/ 13 января 2020

Я занимаюсь разработкой проекта, в котором я использовал карты и местоположение Firebase и Google Play. Вот мой файл Gradle сборки на уровне приложения.

implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "com.google.android.gms:play-services-location:$playServicesVersion"
implementation "com.google.android.gms:play-services-maps:$playServicesVersion"
implementation 'com.google.android.libraries.places:places:2.0.0'

implementation "com.google.firebase:firebase-core:$firebaseCoreVersion"
implementation "com.google.firebase:firebase-perf:$firebasePerfVersion"
implementation "com.google.firebase:firebase-messaging:$firebaseMessagingVersion"

implementation "com.crashlytics.sdk.android:crashlytics:$crashlyticsVersion"

// Room
implementation 'androidx.room:room-runtime:2.1.0'

annotationProcessor 'androidx.room:room-compiler:2.1.0'

// LiveData and ViewModel
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'

implementation 'androidx.lifecycle:lifecycle-common-java8:2.0.0'

implementation "net.danlew:android.joda:$jodaTimeVersion"

// Annotations
implementation 'androidx.annotation:annotation:1.1.0'

implementation "com.squareup.picasso:picasso:$picassoVersion"


dependencies {
    implementation 'com.github.TouchBoarder:weekdays-buttons-bar:v1.0.2'
}

Теперь все работает нормально, и приложение работает нормально. Но когда я попытался добавить строку ниже:

 implementation 'com.google.android.gms:play-services-ads:17.0.0'

, тогда появляется следующая ошибка не может вместить запрошенные классы в один файл dex

Я искал это и нашел некоторые решения, такие как multi dex enabled и minifyenabled для отладки, но когда эти решения применяются, приложение запускается и всегда запускается sh.

Я также применил решение об удалении некоторых библиотек просто для проверки того, Можно добавить библиотеку рекламных объявлений, но она показывает ту же ошибку. Даже если я удаляю 3-4 библиотеки и добавляю одну библиотеку Google Ad, ошибка остается той же. Что делать в этом случае.

Ответы [ 2 ]

0 голосов
/ 13 января 2020

предыдущий подход:

Вместо того, чтобы реализовывать всю библиотеку объявлений, вы должны реализовать только один необходимый ...
Извлечь эту ссылку для дальнейшей информации:

Другой подход.
Вы можете следовать по этой ссылке .
Версии платформы до Android 5.0 (уровень API). 21) использовать среду выполнения Dalvik для выполнения кода приложения. По умолчанию Dalvik ограничивает приложения одним файлом байт-кода classes.dex для каждого APK. Чтобы обойти это ограничение, вы можете добавить библиотеку поддержки multidex в свой проект:

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

Если для minSdkVersion установлено значение 21 или выше, все, что вам нужно сделать, это установить для multiDexEnabled значение true в вашем Файл build.gradle уровня модуля, как показано здесь:

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

Надеюсь, у вас будет решение.

0 голосов
/ 13 января 2020

Пожалуйста, убедитесь, что вы используете одну и ту же версию всех библиотек Google Play Services. Также включите мультидекс для вашего приложения.

    implementation "androidx.multidex:multidex:2.0.1"
...