Интеграция DexGuard в Android Studio 3.0

Я обновил свой проект Android, чтобы использовать последние функции Android Studio 3.0. С тех пор я получаю следующее предупреждающее сообщение при каждой синхронизации Gradle:

Предупреждение. Один из используемых вами подключаемых модулей поддерживает функции языка Java 8. Чтобы попробовать поддержку, встроенную в подключаемый модуль Android, удалите из файла build.gradle следующий код: apply plugin: 'dexguard'. java-8-support-message.html" rel="noreferrer">https://d.android.com/r/tools/java-8-support-message.html

Если я перейду по связанному URL-адресу, я увижу:

Если Android Studio обнаружит, что ваш проект использует Jack, Retrolambda или DexGuard, вместо этого IDE использует поддержку Java 8, предоставляемую этими инструментами.

Есть документы по миграции для Jack и Retrolambda, но нет для DexGuard.

Мои вопросы:

  • Могу ли я удалить плагин DexGuard, и он по-прежнему будет работать должным образом?
  • Если нет, как мне обойти это предупреждение?

Я использую Android Studio 3.0 и DexGuard 8.0.16.


person Daniel Zolnai    schedule 27.10.2017    source источник


Ответы (1)


Вероятно, вы используете Dexguard для обфускации кода, шифрования или обнаружения несанкционированного доступа. Таким образом, его удаление приведет к удалению этих функций. Вам следует попробовать выпуск dexguard 8.0.17 и удалить retrolamb, Jack и плагин Dexguard-java8 из конфигурации сборки.

В моем приложении это, кажется, продолжает работать, в 8.0.15/8.0.16 мне все равно пришлось включить dexguard-java8, чтобы он работал.

в вашем приложении build.gradle добавьте это, чтобы включить компиляцию java8.

apply plugin: 'dexguard'
...
android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

В вашем проекте project.gradle просто добавьте

buildscript {
  repositories {
    flatDir { dirs 'dexguard' }
    ...
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
    classpath ':dexguard:'
    ...
  }
}

и убедитесь, что в ваших файлах gradle нет ссылок на retrolambda или dexguard-java8, и все должно работать нормально.

person Aegis    schedule 31.10.2017
comment
Как вы конкретно использовали версию java8? - person Daniel Zolnai; 02.11.2017
comment
Проверьте примеры в моих ответах - person Aegis; 02.11.2017
comment
У меня точно такая же конфигурация, и я все еще получаю предупреждение о синхронизации с версией 8.0.17. - person Daniel Zolnai; 06.11.2017
comment
это просто предупреждения. если приложение устанавливает и запускает все устройства, на которые вы ориентируетесь, его можно игнорировать. - person Aegis; 07.11.2017
comment
Я использую dexguard-8.1, и студия Android не может создать ошибки, выдающие ошибки: Предупреждение. Один из используемых вами плагинов поддерживает функции языка Java 8. Чтобы попробовать поддержку, встроенную в подключаемый модуль Android, удалите из файла build.gradle следующий код: apply plugin: 'dexguard'. java-8-support-message.html" rel="nofollow noreferrer">d.android.com/r/tools/java-8-support-message.html Ошибка: com.android.builder.dexing. DexArchiveBuilderException: ошибка при индексации файла ActivityName.class. Любая помощь будет оценена по достоинству. - person Namrata Bagerwal; 15.03.2018
comment
Я также получал эту ошибку: Ошибка: com.android.builder.dexing.DexArchiveBuilderException: Не удалось обработать ProjectPath\...\build\intermediates\transforms\instantRun...\... Отключение «Мгновенного запуска» спасло меня. - person Namrata Bagerwal; 16.03.2018