«Ошибка: не удается разместить запрошенные классы в одном файле dex (# методы: 66653 > 65536)» при создании подписанного apk

Я пытаюсь создать подписанный apk, чтобы экспортировать свое приложение в магазин Google Play. Однако я продолжаю получать ту же ошибку. Есть ли что-нибудь, чтобы исправить это.

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "com.example.sean.monacoball"
            minSdkVersion 15
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner 
    "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 
    'proguard-rules.pro'
            }
        }
    }

    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'com.android.support:appcompat-v7:12.0.1'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        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.android.gms:play-services:12.0.1'
    }
}

Ошибка в глубине:

«Ошибка: не удается разместить запрошенные классы в одном файле dex (# методы: 66653 > 65536)» при создании подписанного apk

Эээ, у вас действительно есть эти тысячи и тысячи методов в ваших классах?

GhostCat 30.05.2019 19:26

Нет, я просто использую эти зависимости для межстраничных объявлений Google.

pfft khaganate 30.05.2019 20:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
3 017
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно Руководство по настройке сервисов Google Play:

Note: Don't use the combined play-services target. It brings in dozens of libraries, bloating your application. Instead, specify only the specific Google Play services APIs your app uses.

Когда вы используете com.google.android.gms:play-services:12.0.1, вы загружаете каждый библиотеку сервисов Google Play. Вы должны переключиться на использование только тех библиотек, которые вы действительно используете. Это почти наверняка поставит вас под Ограничение метода 64k одного файла dex.

Откуда вы знаете, какие библиотеки Google Play мне следует использовать и как я могу интегрировать их в свой код.

pfft khaganate 30.05.2019 19:47

@pfftkhaganate — в руководстве по установке есть список всех библиотек вместе с тем, что в них включено — play-services-cast включает поддержку Google Cast, play-services-ads содержит поддержку рекламы и т. д. Если вы не используете ни одну из них в настоящее время, почему вы вообще есть такая зависимость?

ianhanniballake 30.05.2019 19:56

Другие вопросы по теме