【问题标题】:DexGuard integration in Android Studio 3.0Android Studio 3.0 中的 DexGuard 集成
【发布时间】:2018-04-09 07:06:33
【问题描述】:

我已升级我的 Android 项目以使用最新的 Android Studio 3.0 功能。从那时起,我在每次 Gradle 同步时都会收到以下警告消息:

警告:您使用的插件之一支持 Java 8 语言 特征。要尝试内置在 Android 插件中的支持,请删除 从您的 build.gradle 开始: apply plugin: 'dexguard' 了解更多,请前往https://d.android.com/r/tools/java-8-support-message.html

如果我转到链接的 URL,我可以看到:

如果 Android Studio 检测到您的项目正在使用 Jack, Retrolambda 或 DexGuard,IDE 使用由 那些工具。

有 Jack 和 Retrolambda 的迁移文档,但没有适用于 DexGuard。

我的问题是:

  • 我可以删除 DexGuard 插件,它仍然可以按预期工作吗?
  • 如果不是,我应该如何解决这个警告?

我正在运行 Android Studio 3.0 和 DexGuard 8.0.16

【问题讨论】:

    标签: android-studio-3.0 dexguard


    【解决方案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 的引用,并且一切正常。

    【讨论】:

    • 具体是怎么使用java8版本的?
    • 检查我的答案中的例子
    • 我的配置完全相同,但与 8.0.17 版本同步时仍然收到警告
    • 这些只是警告。如果应用程序安装并运行了您定位的所有设备,则可以忽略它。
    • 我也收到此错误:错误:com.android.builder.dexing.DexArchiveBuilderException: Failed to process ProjectPath\...\build\intermediates\transforms\instantRun...\...禁用“即时运行”救了我。
    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2015-12-06
    • 1970-01-01
    • 2015-09-16
    • 2013-12-06
    • 2015-12-03
    相关资源
    最近更新 更多