Android: Dex не может разобрать байтовый код версии 52
Я только что переключился на Android Studio 2.1, и эта ошибка появилась при попытке скомпилировать приложение, которое ранее работало:
Error:Error converting bytecode to dex: Cause: Dex cannot parse version 52byte code. This is caused by library dependencies that have been compiled using Java 8or above. If you are using the 'java' gradle plugin in a library submodule add targetCompatibility = '1.7' sourceCompatibility = '1.7' to that submodule's build.gradle file.
Я уже обновил файл gradle.build основного проекта, чтобы принудительно генерировать код Java 1.7:
Подмодуль создается с помощью Maven. В файле pom.xml Я также попытался принудительно сгенерировать код 1.7.
Я понимаю, что использую артефакт сборки, который включает подчиненные модули, но я не изменил ни один из подчиненных модулей, и результирующий файл .jar для модуля работал нормально при последней компиляции.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId><!-- maven-compiler-plugin --> <version>2.6</version> <configuration> <source>1.7</source> <target>1.7</target> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id><!-- this is used for inheritance merges --> <phase>package</phase><!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Мой вопрос:
Это проблема Android Studio 2.1? Видели ли это другие?
Предполагая, что это моя ошибка, и поскольку сообщение об ошибке не помогает найти неисправный модуль, есть ли какие-либо рекомендации по поиску кода V52? Я не могу просто опустить библиотеки, не нарушая работу большого объема кода. Можно ли проверить файл .jar, чтобы найти редакцию кода?
Переведено автоматически
Ответ 1
просто используйте java 1.8 с Android Studio 3.0+ и установите для меня следующие работы: кажется, нужны новейшие инструменты сборки
Если вы используете org.jetbrains:annotation:15 и плагин retrolambda, удалите строку compile org.jetbrains:annotations:15.0 из вашего build.gradle, и ошибка исчезнет. У меня это работает.
Ответ 4
Возможно, некоторые из ваших зависимостей были скомпилированы с Java 8, особенно не для Android. Попробуйте переключить эти зависимости на более старую версию. Я точно не знаю, какую библиотеку вам следует понизить, потому что вы не прикрепили список зависимостей вашего основного модуля.
Например: у меня была такая же проблема. После нескольких часов поиска я обнаружил, что для этой библиотеки org.codehaus.httpcache4j.uribuilder:2.0.0 требуется Java 8, начиная с github. Итак, когда я переключился на 1.1.0, проект был успешно собран и развернут.