cordova: transformClassesWithDexForReleaseDex: Ошибка преобразования байт-кода в dex - PullRequest
0 голосов
/ 06 ноября 2018

Последние несколько дней я боролся с этой проблемой и попробовал несколько предложенных исправлений. Один из них, если использовать Джека, работает, но

  1. удваивает время и память, необходимые для сборки
  2. Джек устарел

Я также пытался обновить версию Java, указанную в CordovaLib / build.gradle, но это, похоже, тоже не решает проблему.

Я использую Cordova 7.1.0, обновление, вероятно, не является тривиальным вариантом. И Java 1.8.0

замечания

Следующая команда не может быть собрана:

cordova --release build android --device

с

:transformClassesWithDexForReleaseDex: Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using 
Java 8 or 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.
    UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Exception parsing classes
    at com.android.dx.command.dexer.Main.processClass(Main.java:775)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:741)
    at com.android.dx.command.dexer.Main.access$1200(Main.java:88)
    at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1683)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:695)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:592)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:321)
    at com.android.dx.command.dexer.Main.run(Main.java:292)
    at com.android.builder.internal.compiler.DexWrapper.run(DexWrapper.java:54)
    at com.android.builder.core.DexByteCodeConverter.lambda$dexInProcess$0(DexByteCodeConverter.java:173)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
    at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:476)
    at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
    at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
    at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
    at com.android.dx.command.dexer.Main.parseClass(Main.java:787)
    at com.android.dx.command.dexer.Main.access$1600(Main.java:88)
    at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1722)
    at com.android.dx.command.dexer.Main.processClass(Main.java:773)
    ... 16 more

Но, следующее строит:

( cd platforms/android ; ./gradlew cdvBuildRelease -b build.gradle )

После этого также строится следующее (хотя раньше этого не делалось)

cordova --release build android --device

Наконец, если я очищаю сборку, я возвращаюсь в состояние, в котором он не собирается.

( cd platforms/android ; ./gradlew clean )
cordova --release build android --device

Не уверен, что делать дальше, чтобы добраться до сути вопроса.

1 Ответ

0 голосов
/ 06 ноября 2018

Вы пытались изменить это в вашей сборке Gradle, как это? targetCompatibility = '1.7' sourceCompatibility = '1.8'

Если вы выполняете CLEAN и удаляете все свои файлы .class, чтобы они перекомпилировались в формат 1.7, вам будет хорошо.

Просто убедитесь, что вы делаете чистое ПОСЛЕ изменения значений в вашей сборке Gradle, как показано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...