Dex загрузчик не может выполнить dex: идентификатор метода не в [0, 0xffff]: 65536
iam, строя мое приложение, я получил эту ошибку
Предупреждение Dx: игнорирование атрибута InnerClasses для анонимного внутреннего класса
(com.amazonaws.javax.xml.stream.xerces.util.SecuritySupport12 $4), который не поставляется с
связанный атрибут EnclosingMethod. Этот класс, вероятно,
который не предназначен для современного формата .class. Рекомендуемый
решение состоит в том, чтобы перекомпилировать класс из источника, используя современный компилятор
и без указания параметров типа "-target". Следствие игнорирования
это предупреждение состоит в том, что рефлексивные операции над этим классом будут неверными
что это не внутренний класс.
Dex Loader] Невозможно выполнить идентификатор метода dex: не в [0, 0xffff]: 65536
Не удалось выполнить преобразование в формат Dalvik: невозможно выполнить идентификатор метода dex: не в [0, 0xffff]: 65536
Ответы
Ответ 1
Проверьте путь сборки → Путь сборки Java → вкладка "Заказ и экспорт" → снимите флажок "Частные Librairies" для Android.
Если он все еще не работает, добавьте следующую строку: dex.force.jumbo=true
в файл project.properties
.
Вероятная причина - это, возможно, большой размер jar в пути сборки.
Изменить:
Это устарело, потому что Eclipse больше не поддерживается Google, если вы хотите избавиться от этих неприятных проблем: используйте Android Studio и включите Multidex.
Ответ 2
Решение Driss Bounouar действительно поможет вам в создании вашего проекта, но ваше приложение может потерпеть крах в некоторых местах после его реализации, я думаю, что он фактически подавляет проблему во время компиляции.
Ошибки, которые я получал на консоли, были: -
Dex Loader] Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
[2014-11-08 15:51:58 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(jnamed$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
[2014-11-08 15:51:58 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(jnamed$2) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
[2014-11-08 15:51:58 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(jnamed$3) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
[2014-11-08 15:51:59 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.xbill.DNS.UDPClient$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
В соответствии с этой трассировкой я попытался перекомпилировать все проекты с тем же самым и последним компилятором, но все же я не получал никакого успеха.
Позже, заменив последние сервисы Google Play, при этом старая проблема исправила мою проблему.
За несколько часов до этого я обновил мои сервисы google play и начал получать эту ошибку после.
ИЗМЕНИТЬ
Чтобы понять реальную проблему, вы должны посмотреть Создание приложений с более чем 65K-методами. В нашей ситуации похоже, что старые сервисы google Play имели меньшее число методов и, следовательно, проект успешно компилируется.
Краткий
Весь наш проект скомпилирован в один файл dex, который имеет предел 65K методов. Но теперь вы можете включить мультидексы в проекте.
Решение, доступное до сих пор, будет работать только с GRADLE (Android Studio), я не нашел способа заставить его работать на Eclipse.
Ответ 3
Я просто нашел альтернативу для решения этой проблемы на Eclipse при использовании Служб Google Play.
Потому что на Eclipse кажется, что нет возможности использовать multidex, как в Android Studio (и Gradle), теперь это единственный способ работать с Eclipse rigth сейчас.
- зайдите в проект google-play-service-lib
- перейти в libs
- распакуйте файл google-play-services.jar
- зайдите в распакованную папку и удалите все папки, которые вам не нужны (например, если вам нужна Google Analytics, вы можете удалить рекламу, игры, карты, кошелек, диск и т.д.).
- zip снова такую папку (которая теперь содержит только необходимые библиотеки) вместе с папкой MANIFEST
- используйте такую новую банку с вашим проектом.
Ответ 4
Истекшая проблема. Проблема заключалась в проекте google-play-services_lib.
Он включает многие функции. Эта проблема исправлена в 21 и более новых версиях
Google-игра-services_lib.
Чтобы исправить проблему с несколькими деками, вы должны полностью удалить старый проект lib и использовать google-play-services_lib_v_21 или новее.
Например, я использовал этот: google-play-services.
P.S. Также имейте в виду, что официальные google play setup docs говорят:
Вы должны ссылаться на копию библиотеки, которую вы скопировали в рабочую область разработки - вы НЕ должны ссылаться на библиотеку непосредственно из каталога Android SDK.
Ответ 5
Я также недавно обновил игровые библиотеки google до версии 29, и мое приложение попало в лимит 2 ^ 16! Я понизился до версии 26, и я знал, что это сработало для меня, и это действительно так.
В настоящее время разработка с Eclipse стала довольно неустойчивой, поэтому очень важно отслеживать все версии всех установленных пакетов!
Решение в долгосрочной перспективе - перейти на Android Studio.
Ответ 6
Вы получаете эту ошибку главным образом потому, что существует ограничение на исполняемые файлы dalvik и, по-видимому, предел равен 65536, что составляет 2 ^ 16.
Вам нужно включить конфигурацию multi-dex для вашего приложения для Android.
Чтобы включить multi-dex, выполните следующие действия:
-
Отредактируйте файл build.gradle вашего основного модуля (приложения)
android {
defaultConfig {
...
multiDexEnabled true
}
}
dependencies {
...
compile 'com.android.support:multidex:1.0.1'
}
-
Сообщите вашему классу приложений эти изменения.
Вы можете изменить свой собственный класс приложения, чтобы включить поддержку multi-dex.
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
ИЛИ
public class MyApplication extends MultiDexApplication{
}
ИЛИ
Измените файл AndroidManifest.xml, чтобы применить изменения к тегу приложения
<?xml version="1.0" encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
Существуют ограничения ниже уровня API 14 и ниже. Приложение не может компилироваться или работать ниже уровня API 14. При компиляции вы можете получить исключение OutOfMemory. Чтобы решить эту проблему, добавьте следующую команду для build.gradle
dexOptions {
jumboMode true
javaMaxHeapSize "4g"
}