Предупреждение Dx: игнорирование InnerClasses .. для org.apache.tools.ant - PullRequest
3 голосов
/ 18 ноября 2011

Я столкнулся с этим набором предупреждений, которые приводили к переполнению памяти и в конечном итоге приводили к сбою Eclipse.

Это приложение для Android с ядром twitter4J, включенным в качестве справочной библиотеки. Это использует API Google (com.google.android.), Поэтому я установил цель для API Google, а не для общего ADK.

Вот проблема.

[2011-11-18 08:29:24 - Twitter] Dx предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса (org.apache.tools.ant.taskdefs.Parallel $ 1), который не поставляется с связанный атрибут EnclosingMethod. Этот класс, вероятно, был произведен компилятор, который не предназначался для современного формата файла .class. Рекомендуемый решение состоит в том, чтобы перекомпилировать класс из исходного кода, используя современный компилятор и без указания каких-либо опций типа "-target". Следствие игнорирования это предупреждение о том, что отражающие операции над этим классом будут некорректно указать, что это не внутренний класс.

Этот вид предупреждений продолжается примерно до 20 внутренних классов (около 6 в taskdefs), и все внутренние классы, упомянутые в консоли, взяты из org.apache.tools.ant.

Я обновил Java SE 6 до 1.6 для Mac OS X Lion с http://mac.softpedia.com/get/System-Utilities/Java.shtml,

но проблема все еще существует. Должен ли я обновить мой муравей? моя версия муравья 1.8.2.

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Это результат того, что некоторые из использованных библиотек были скомпилированы с JDK 1.4 или более ранней версией.Решение состоит в том, чтобы перекомпилировать все это в новые файлы .jar для Android Mock для использования

0 голосов
/ 13 мая 2016

Это происходит при компиляции проекта. Просто добавьте это в файл proguard-rules.pro. Предупреждение исчезнет.

-keepattributes EnclosingMethod
...