DexGuard integration in Android Studio 3.0

2019-03-16 14:49发布

I have upgraded my Android project to use the latest Android Studio 3.0 features. Since then, I am getting the following warning message on each Gradle sync:

Warning:One of the plugins you are using supports Java 8 language features. To try the support built into the Android plugin, remove the following from your build.gradle: apply plugin: 'dexguard' To learn more, go to https://d.android.com/r/tools/java-8-support-message.html

If I go to the linked URL, I can see:

If Android Studio detects that your project is using Jack, Retrolambda, or DexGuard, the IDE uses Java 8 support provided by those tools instead.

There are migration docs for Jack and Retrolambda, but none for DexGuard.

My questions are:

  • Can I remove the DexGuard plugin and it will still work as expected?
  • If no, how should I go around resolving this warning?

I am running Android Studio 3.0 and DexGuard 8.0.16

1条回答
Deceive 欺骗
2楼-- · 2019-03-16 15:22

You are probably using Dexguard for code obfuscation, encryption or tamper detection. So removing it will remove those functionalities. You should try out the 8.0.17 release of dexguard and remove retrolamb, Jack and the Dexguard-java8 plugin from your build config.

On my app this seems to keep working, on 8.0.15/8.0.16 I still had to enable dexguard-java8 to have it working.

in your app build.gradle add this to enable java8 compiling.

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

In your project.gradle just add

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

and make sure there are no references to retrolambda or dexguard-java8 in your gradle files and everything should work fine.

查看更多
登录 后发表回答