Android Studio: почему я получаю ошибку multi dex в новом проекте Google Maps API?


Я относительно новичок в программировании на Android и пытаюсь создать проект Google Maps. Я использовал опцию шаблона в Android Studio,и я добавил ключ для API.

Я не добавил свой собственный код и оставил код шаблона как есть, потому что я просто хотел запустить код и посмотреть, как он выглядит, однако, я продолжаю получать ошибку multi dex, когда я пытаюсь запустить это на эмуляторе, вызывая сбой сборки. Мне странно, что я получаю эту ошибку, потому что у меня ее нет. добавлены кода на всех и я с помощью шаблона Карты Google с Android студия.

Кто-нибудь знает, почему эта ошибка появляется в совершенно новом проекте? Ошибка, которую я вижу, вставлена ниже.

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

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

Com.андроид.строить.прикладной программный интерфейс.преобразиться.TransformException: com.андроид.интегрированная среда разработки.общий.процесс.ProcessException: java.утиль.параллельный.ExecutionException: com.андроид.интегрированная среда разработки.общий.процесс.ProcessException: org.градля.процесс.внутренний.ExecException: процесс "команда" C:Program файлыпапку Javajdk1.8.0_91бинЯва.exe " закончено с ненулевым значением выхода 2

6 5

6 ответов:

Как указано ниже:

Вероятно, вы компилируете все API play-services с помощью compile ' com.гугл.андроид.gms: play-services: 9.2.0'... Теперь мы можем выборочно компиляции API, чтобы избежать ограничения Декс 64К. Для карты Google использовать com.гугл.андроид.gms: play-services-maps: 9.2.0... - Локи 1 июля в 19: 01

Ответ от Локи сработал и был очень прост в исполнении.

Настройка сервисов google play

Перейдите по этой ссылке, просто добавьте зависимости, которые вы хотите в своем приложении. Это предотвратит ошибку превышения 64k.

Счастливое кодирование.

Проблема в том, что в настоящее время у вас есть большое количество методов. Существует только 65536 методов для dex. Вы можете попробовать включить multiDex, отредактировав свою сборку.файл Gradle.

android {
          //stuff

defaultConfig {
    ...

       // Enable multiDex support. 
       multiDexEnabled true
    }

}

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

Кроме того, oops как постер, упомянутый выше в вашем манифесте, вам также нужно добавить, что вы используете класс multidex из библиотеки поддержки multidex.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.dexapp">
<application
    ...
    android:name="android.support.multidex.MultiDexApplication">
    ...
</application>

Измените конфигурацию сборки Gradle, чтобы включить multidex

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0 rc2"

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

В манифесте добавьте класс MultiDexApplication из библиотеки поддержки multidex в элемент application.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

Примечание: посещение https://developer.android.com/studio/build/multidex.html для получения дополнительной информации.

Задайте свойству multiDexEnabled значение true в defaultConfig. Эта ошибка возникает, когда ссылки на методы увеличивают предел 65k. Проверьте API сервиса Google Play.

    android{
        ...
        defaultConfig {
            ...
            multiDexEnabled true
        }
        ...
    }

Вот хороший источник, чтобы начать работу с Google Maps Android API

Я удалил зависимости, как предложил Локи, и это работает.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.google.android.gms:play-services-maps:9.4.0'
}