Подтвердить что ты не робот

Не удалось построить apk: количество ссылок на методы не может превышать 64K

Я пытаюсь создать файл apk для своего приложения, однако я получаю сообщение об ошибке: количество ссылок на методы не может превышать 64 КБ.

Вот ошибки,

Ошибка: количество ссылок на методы в файле .dex не может превышать 64 КБ. Узнайте, как решить эту проблему на https://developer.android.com/tools/building/multidex.html

Ошибка: выполнение выполнено для задачи ': app: transformClassesWithDexForDebug'.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' C:\Program Files\Java\jdk1.7.0_15\bin\java.exe '' завершена с ненулевым значением выхода 2

Это мой файл gradle,

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
    applicationId "nikhilraghavendra.hopper"
    minSdkVersion 21
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE-FIREBASE.txt'
    exclude 'META-INF/NOTICE'
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'com.firebase:firebase-client-android:2.3.1'
compile 'com.android.support:cardview-v7:23.2.1'
compile 'com.google.android.gms:play-services:8.4.0'
}

Я хочу создать файл apk и развернуть его без каких-либо проблем, как это сделать?

Обновление

Я также пробовал следующее

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

dexOptions {
    maxProcessCount = 4 // this is the default value
}

dataBinding{
    enabled = true
}

defaultConfig {
    applicationId "nikhilraghavendra.hopper"
    minSdkVersion 21
    targetSdkVersion 23
    resConfigs "en", "fr"
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
    debug {
        minifyEnabled true
        useProguard false
    }
}
packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE-FIREBASE.txt'
    exclude 'META-INF/NOTICE'
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'com.firebase:firebase-client-android:2.3.1'
compile 'com.android.support:cardview-v7:23.2.1'
compile 'com.google.android.gms:play-services:8.4.0'
}

Это сообщение:

Ошибка: выполнение выполнено для задачи ': app: transformClassesWithNewClassShrinkerForDebug'.

Предупреждения, обнаруженные во время сокращения, используйте -dontwarn или -ignorewarnings для их подавления.

Как я могу справиться с этим и построить правильный apk? Пожалуйста, помогите.

4b9b3361

Ответ 1

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"

    defaultConfig {
        applicationId "com.try.app"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

здесь multiDexEnabled true должен сделать игру для вас

ОБНОВЛЕНИЕ: для поддержки последней версии Android
1. Если для параметра minSdkVersion установлено значение 21 или выше, все, что вам нужно сделать, это установить для параметра multiDexEnabled значение true в файле build.gradle на уровне модуля, как показано выше.
2. Однако если для параметра minSdkVersion установлено значение 20 или ниже, вы должны использовать библиотеку поддержки multidex вместе с приведенными выше изменениями следующим образом:

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

Помимо вышеперечисленного добавления библиотеки поддержки, вам необходимо внести изменения в свой класс приложений, как указано в этой Link.

ЛУЧШАЯ ПРАКТИКА:
1. Удалите неиспользуемый код с помощью proguard.
2. Избегайте добавления ненужных зависимостей в свой проект.
3. Если требуются ограниченные методы или классы любой библиотеки с открытым исходным кодом, то желательно клонировать только те, что есть в вашем проекте, поскольку это не только дает вам полный контроль над ними, но также позволяет proguard действовать на них, и у вас нет любые неиспользуемые методы в вашем коде.

Источник: Android-разработчики - настройка приложений с использованием количества меток 64K

Ответ 2

Невозможно построить apk: число ссылок на методы не может превышать 64 КБ, когда файл .dex приложения имеет более 65 536 методов.

Превысить метод 65K, что означает, что метод подсчитывает более 65 536 методов Существуют различные способы его устранения:

1. Сокращение зависимостей в вашем проекте установите зависимости в gradle, которые требуются

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

 compile 'com.google.android.gms:play‐services:8.4.0'

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

compile 'com.google.android.gms:play‐services‐location:8.4.0'
compile 'com.google.android.gms:play‐services‐maps:8.4.0'
compile 'com.google.android.gms:play‐services‐ads:8.4.0'

2. Установите минимальную версию SDK до 21 или выше

Почему это сработало при изменении минимального SDK до 21? Что из-за Android 5.0 или выше используются ART (Android Runtime), который поддерживал MultiDex вместо Dalvik. Таким образом, АРТ может поддерживать более 65 536 Методы.

3. Используйте Proguard для уменьшения бесполезного метода

4. Используйте MultiDex

Но это ограничение библиотеки MultiDex

• Может возникнуть ANR при запуске приложения, если файлы .dex слишком большие.

• Должен определяться минимальный SDK до версии 14 или выше.

• MulitDex использует больше памяти и может упасть во время работы приложения, если память распределения превышает лимит.

• Возьмите больше времени сборки при создании проекта

Ответ 3

Поместите это в свой defaultConfig:

multiDexEnabled true