Intereting Posts
Что инициирует вещание BluetoothDevice.ACTION_ACL? Как вызвать функцию основного действия из пользовательского ArrayAdapter? Что означает эта ошибка: «Предварительный просмотр графики в редакторе макетов может быть неточным: Paint.setShadowLayer не поддерживается»? Gradle: как опубликовать библиотеку Android в локальном репозитории Как «хорошо» – это эмулятор Android? Как включить автоматическое создание ярлыков после загрузки и установки приложений с Android Market? Какие языки программирования можно использовать на Android Dalvik? Как поддерживать арабский текст в Android? Преобразование файла класса в файл dex SetOnClickListener (новый OnClickListener () {}) Android: есть ошибка, когда я нажимаю на свой editText Содержимое Android SMS (контент: // sms / sent) Разница между отладкой и выпуском apks Java: масштабирование карты Mapsforge при использовании онлайн-растровых изображений вместо автономного рендеринга Предупреждение JavaScript не работает в Android WebView

НЕОПРЕДЕЛЕННОЕ ТОП-УРОВЕННОЕ ИСКЛЮЧЕНИЕ: com.android.dex.DexException: несколько файлов dex определяют

Когда я добавляю конфигурации для Google Analytics в свой проект Android и строю проект, я получаю следующую ошибку:

:app:transformClassesWithDexForDebug UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Ljavax/inject/Inject; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334) at com.android.dx.command.dexer.Main.run(Main.java:277) at com.android.dx.command.dexer.Main.main(Main.java:245) at com.android.dx.command.Main.main(Main.java:106) FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForDebug'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:310) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:90) at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:54) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:49) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:71) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) Caused by: org.gradle.internal.UncheckedException: com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:45) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:78) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:243) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:230) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 57 more Caused by: com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:411) at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:112) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) ... 63 more Caused by: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:42) at com.android.builder.core.AndroidBuilder.convertByteCode(AndroidBuilder.java:1325) at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:396) ... 65 more Caused by: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:365) at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:40) ... 67 more 

Что это значит и как я могу предотвратить эту ошибку?

Solutions Collecting From Web of "НЕОПРЕДЕЛЕННОЕ ТОП-УРОВЕННОЕ ИСКЛЮЧЕНИЕ: com.android.dex.DexException: несколько файлов dex определяют"

Немного поздно в игре здесь, но это, скорее всего, проблема с зависимостями, которые вы указали в файле build.gradle для вашего приложения.

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

Вещи, которые я не рекомендую:

Если у вас нет абсолютной необходимости включить multiDex в свой build.gradle, НЕ ДЕЛАЙТЕ ЭТО , это просто перешагивает основную проблему в вашем приложении и не попадает в ее корень. Вы также излишне увеличиваете размер своего apk, и могут возникнуть непредвиденные сбои, когда в вашем файле dex есть конфликтный метод.

Что нужно посмотреть:

Проверьте все свои зависимости в файле build.gradle. Вы ссылаетесь на зависимость, которая также включает зависимость, которую вы уже включили? Например, если в вашем приложении appcompat-v7 нет необходимости включать appcompat-v4, поскольку v7 включает в себя все функции из v4.

ЧТО Я НАСТОЯЩИМ НАЙТИ (МОЙ ВОПРОС, заставляющий мое приложение превышать ограничение метода в моем файле dex) —-> GOOGLE PLAY SERVICES

Если вам не нужны все зависимости в библиотеке сервисов Google Play STAY AWAY от этой строки в файле build.gradle compile 'com.google.android.gms:play-services:8.3.0' а вместо этого используйте то, что вам нужно!

Google имеет полный список библиотек для выборочной компиляции здесь

При всем том, что вам, вероятно, нужно включить эту одну строку в градиент для вашей Google Analytics:

  dependencies{ compile 'com.google.android.gms:play-services-analytics:8.3.0' } 

РЕДАКТИРОВАТЬ

Кроме того, вы можете просмотреть дерево зависимостей, перейдя в корень вашего проекта (или используя терминал в студии Android) и запустив:

 ./gradlew app:dependencies 

Удачи и счастливого кодирования!

Обновить

Теперь, начиная с Android Studio 2.2, вам больше не нужно проверять и проверять, нужно ли использовать многоэкранное приложение. Используйте анализатор Apk, чтобы узнать, действительно ли это необходимо!

Объяснение: создание приложений с более чем 65 тыс. Методов

Файлы приложений Android (APK) содержат исполняемые файлы байт-кода в виде файлов Dalvik Executable (DEX), которые содержат скомпилированный код, используемый для запуска вашего приложения. Спецификация исполняемого файла Dalvik ограничивает общее количество методов, на которые можно ссылаться в одном файле DEX, до 65 536 , включая методы фреймворка Android, методы библиотеки и методы в вашем собственном коде. Чтобы преодолеть этот предел, необходимо настроить процесс создания приложений для создания более чем одного файла DEX, известного как многоэлементная конфигурация.

Примечание. Это позволяет вам ссылаться на все методы приложения. Это похоже на то, что у вас есть два модуля (предел: 2 x 65K), но они уплотнены в один. Это влечет за собой затраты (время) в процессе сборки.

Решение:

  1. Вы должны попытаться отформатировать свой код с помощью библиотек, чтобы удалить лишние классы, а также не превышать предельные методы. Например, если вы используете игровые сервисы карт (com.google.android.gms: play-services: 8.1.0), вы можете изменить (compile 'com.google.android.gms: play-services-maps: 8.1. 0 '), чтобы устранить ненужные библиотечные зависимости. Затем синхронизируйте Gradle в AndroidStudio и проверьте, запущен ли он. Если ни один прогон не переходит в точку 2.
  2. Добавьте это в build.gradle (модуль приложения).
 android { ... defaultConfig { ... multiDexEnabled true } } 

Для меня это было связано с симплексным конвертером для модификации 2. И это исправлено:

compile ("com.squareup.retrofit2:converter-simplexml:2.0.0-beta4"){ exclude module: 'stax' exclude module: 'stax-api' exclude module: 'xpp3'}

Поддержка Multidex для Android 5.0 и выше

Android 5.0 и выше использует среду выполнения, называемую ART, которая поддерживает загрузку нескольких файлов dex из файлов APK приложения. ART выполняет предварительную компиляцию во время установки приложения, которая сканирует файлы классов (..N) .dex и компилирует их в один файл .oat для исполнения устройством Android. Дополнительные сведения о времени выполнения Android 5.0 см. В разделе Введение в ART.

Это означает, что ваше приложение будет работать нормально на уровне API 21 или выше.

Поддержка Multidex до Android 5.0

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

Итак, во-первых, убедитесь, что вы импортировали правильную зависимость, которая кажется, что вы это сделали.

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

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

 <?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> 

Альтернативно этому, если ваше приложение расширяет класс Application , вы можете переопределить метод attachBaseContext() и вызвать MultiDex.install(this) чтобы включить multidex .

  @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } 

Наконец, вам нужно будет обновить файл build.gradle, как показано ниже, добавив multiDexEnabled true :

 defaultConfig { applicationId '{Project Name}' minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } 

Надеюсь, это поможет вам.

В моем случае, у меня было это дважды в файле build.grade

 compile 'com.google.android.gms:play-services-auth:8.4.0' 

Как только я удалил вторую запись, она работала нормально.

Что я сделал, чтобы исправить это, здесь были удалены изменения градиента ( https://developers.google.com/analytics/devguides/collection/android/v4/ ), а затем в Android Studio вошли в «файл / структура проекта», затем нажмите Аналитика, и если флажок установлен, снимите отметку с него, дайте градиентной синхронизации, затем снова установите флажок и нажмите кнопку, чтобы войти. После всего этого, чтобы заставить ваш трекер отслеживать mTracker = analytics.newTracker(<here>) вам просто нужно скопировать фактический идентификатор трекера в mTracker = analytics.newTracker(<here>) посмотрите эту страницу для справки. https://developers.google.com/android/reference/com/google/android/gms/analytics/GoogleAnalytics

Точно такая же проблема, как я столкнулся!

Я узнал, что это произошло из-за дублирования зависимостей. В build.gradle одна зависимость может быть уже включена в другие, что порождает конфликты. Я удалил необходимые зависимости и решил свою проблему.

Включите определенные зависимости в файле сборки.

Если вы хотите добавить карты в свое приложение, включите компиляцию ' com.google.android.gms: play-services-location: 9.2.1 '


Вместо компиляции ' com.google.android.gms: play-services: 9.2.1 '

Я думаю, что вы используете google analytic sdk V3, используя V4, вместо этого у меня также проблема с той же проблемой при использовании sdk V3 google analytics https://developers.google.com/analytics/devguides/collection/android/v4/ см. Эту ссылку для больше информации.

Это может произойти, если вы обновили Android Studio до последней версии 1.4. Вы обновили библиотеки поддержки до последних версий? Ваша compileSdkVersion должна быть 23.

 apply plugin: 'com.android.application' android { compileSdkVersion 23 //update this to 23 buildToolsVersion "21.1.2" defaultConfig { applicationId "your.package.name" minSdkVersion 16 targetSdkVersion 21 multiDexEnabled true //enable this } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { // update these to 23 if you have them and add the multidex compile 'com.android.support:support-v4:23.0.1' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:23.0.1' compile 'com.google.android.gms:play-services:+' compile 'com.android.support:multidex:1.0.1' } 

На самом деле я обнаружил, что слишком много модулей Android Studio способствовали тому, что эта ошибка не была включена. Если вы пытаетесь избежать включения multidex, предел, по-видимому, составляет около 26 модулей. Это было с Android Studio 1.5.1

Та же проблема, но при использовании response-native-svg. Это помогло мне:

 cd android ./gradlew clean 

Источник