Ошибка: не может соответствовать запрограммированным классам в одном файле 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'
Ответы
Ответ 1
Ни один из ответов, которые они дали вам, не был исчерпывающим. Проблема заключается в Multidex. Вы должны добавить библиотеку в графе приложения:
implementation 'com.android.support:multidex:1.0.3'
После этого добавьте defaultConfig градиента приложения:
multiDexEnabled true
Ваше приложение должно быть типа Multidex. Вы должны записать его в манифесте:
android:name=".MyApplication"
"MyApplication" должен быть либо классом Multidex, либо должен расширять его.
Ответ 2
Я решил проблему с решением ниже:
В файле сборки Gradle добавьте зависимость:
реализация 'com.android.support:multidex:1.0.3'
А затем в разделе "defaultConfig" добавьте:
multiDexEnabled true
Ответ 3
измените свое приложение или модуль build.gradle
android {
defaultConfig {
...
minSdkVersion 21 <----- *here
targetSdkVersion 26
multiDexEnabled true <------ *here
}
...
}
Согласно официальной документации
Поддержка Multidex для Android 5.0 и выше
Android 5.0 (API-уровень 21) и выше использует среду выполнения, называемую ART, которая поддерживает загрузку нескольких файлов DEX из файлов APK. ART выполняет предварительную компиляцию на время установки приложения, которое сканирует файлы classesN.dex и компилирует их в один файл.oat для исполнения устройством Android. Поэтому, если ваш minSdkVersion равен 21 или выше, вам не нужна библиотека поддержки multidex.
Для получения дополнительной информации о времени выполнения Android 5.0 прочитайте ART и Dalvik.
https://developer.android.com/studio/build/multidex
Ответ 4
Вы можете следить за этим.
Версии платформы до 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
}
...
}
Ответ 5
Привет, проблема здесь.
compile 'com.google.android.gms:play-services:11.8.0'
Зачем?
Примечание. Не используйте комбинированную цель игровых сервисов. Это приносит десятки библиотек, раздувая ваше приложение. Вместо этого укажите только определенные API-интерфейсы служб Google Play, которые использует ваше приложение.
И используйте то, что вам нужно. 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
Ответ 6
Если вы строите DEBUG APK, просто добавьте:
debug {
multiDexEnabled true
}
внутри buildTypes
и если вы создаете RELEASE APK, добавьте multiDexEnabled true
в блок release as-
release {
...
multiDexEnabled true
...
}
Ответ 7
Просто сделайте следующее:
build.gradle
(module:app)
android {
....
defaultConfig {
multiDexEnabled true // enable mun
}
}
И добавьте приведенную ниже зависимость в файл build.gradle
приложения build.gradle
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
Ответ 8
В файле сборки 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 Открыть файл
Вам нужно изменить свой град до 3.0.1
classpath 'com.android.tools.build:gradle:3.0.1'
И поместите следующий код в файл gradle-wrapper.properties
distributionUrl = https://services.gradle.org/distributions/gradle-4.1-all.zip
в заключение
add class Применение в проекте И представите его в AndroidManifest, который простирается от MultiDexApplication
public class App extends MultiDexApplication {
@Override
public void onCreate( ) {
super.onCreate( );
}
}
Сначала запустите проект, чтобы создать ошибку, затем очистите проект
Наконец, перезапустите проект и наслаждайтесь им.
Ответ 9
У вас слишком много методов. Файл Android dex имеет ограничение в 65536 методов, которые вам разрешено иметь.
Для начала, если вам не нужен весь API сервисов Google Play и только место, замените
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
Ответ 10
Для флаттер-проектов вы также можете решить эту проблему
откройте свой \android\app\build.gradle
у вас должно быть следующее:
android {
defaultConfig {
...
minSdkVersion 16
targetSdkVersion 28
}
}
Если для minSdkVersion установлено значение 21 или выше, все, что вам нужно сделать, это установить для multiDexEnabled значение true в defaultConfig. Как это
android {
defaultConfig {
...
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true
}
}
если для minSdkVersion установлено значение 20 или ниже, добавьте multiDexEnabled true в defaultConfig
И определить реализацию
dependencies {
implementation 'com.android.support:multidex:1.0.3'// or 2.0.1
}
В конце вы должны иметь:
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
Ответ 11
multiDexEnabled true
Попробуйте добавить это в свое приложение defaultConfig {}. Это поможет мне решить проблему
Ответ 12
Если вы используете minifyEnabled с Proguard, вам, скорее всего, не нужно будет включать multi-dex. Я согласен с MG Developer, что вы должны стараться избегать multi-dex, если это возможно. Моим решением было включить multi-dex только для отладочных сборок. 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
}
}
Ответ 13
Я понятия не имею, почему, может быть, это потому, что я развиваюсь в Котлине, но для исправления этой ошибки мне, наконец, нужно создать класс, который расширяет 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">
не работает для меня
Ответ 14
Все, что мне нужно было сделать, это установить минимальную версию SDK в 21 в "Файл"> "Структура проекта"> "Приложение"> "Ароматизаторы"
Ответ 15
Я столкнулся с этой ошибкой дважды, и решение для этого; Проверьте файл приложения gradle, чтобы увидеть ваш целевой SDK, если он равен 20 или выше, просто добавьте одну строку в свой defaultconfig { multiDexEnabled true }
Если ваш targetSDK меньше 20, добавьте строку в ваш defaultConfig, а также добавьте зависимость
implementation 'com.android.support:multidex:1.0.3'.
Проверьте эту ссылку для получения дополнительной информации.
https://developer.android.com/studio/build/multidex#mdex-gradle
Ответ 16
Использование поддержки multidex должно быть последним средством. По умолчанию сборка Gradle будет собирать тонну транзитивных зависимостей для вашего APK. Как рекомендуется в Документах для разработчиков Google, сначала попытайтесь удалить ненужные зависимости из вашего проекта.
С помощью командной строки перейдите к корневому каталогу проектов Android. Вы можете получить дерево зависимостей компиляции следующим образом.
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 Studio выберите "Создать"> "Анализировать APK". Выберите файл APK выпуска/отладки, чтобы просмотреть его содержимое. Это даст вам методы и количество ссылок следующим образом.
![Analyze APK]()
Ответ 17
В сборке: приложение
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'
Ответ 18
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
}