【问题标题】:How Can I debug R8 during compilation?如何在编译期间调试 R8?
【发布时间】:2019-04-09 14:51:40
【问题描述】:

在编译 Android 项目期间有什么方法可以调试 R8 吗?

我遇到了一个非常奇怪的错误,随便修复也无济于事

【问题讨论】:

    标签: android android-r8 android-d8


    【解决方案1】:

    假设您已签出 R8 项目(来自 https://r8.googlesource.com/r8)并使用 IntelliJ 作为调试器,这是一种调试 Gradle 构建 Android Studio 项目的方法。

    第一次构建 r8:

    tools/gradle.py r8
    

    r8.jar 内置在 build/libs 中,然后应该在主 build.gradle 文件(在 buildscript.repositories 部分)中引用,如下所示:

    buildscript {
    
        dependencies {
            classpath files($PATH_TO_R8_JAR)  // Must be before the Gradle Plugin for Android.
            classpath 'com.android.tools.build:gradle:3.4.0-rc03'
         }
    }
    

    要调试命令行 Gradle 运行,请在调用 Gradle 时传递选项 -Dorg.gradle.debug=true--no-daemon,例如对于 Android Studio 项目的发布版本:

    ./gradlew assembleRelease -Dorg.gradle.debug=true --no-daemon
    

    gradle 命令将等待调试器附加。在 IntelliJ 中创建一个标准的远程调试配置并附加。 gradle 命令将继续,R8 代码中的断点将被命中。

    注意:对于一系列 3.5.0 aplha 版本,将 r8.jar 添加到 build.gradle 可能会导致 Kotlin 项目出现问题(请参阅 Issue 129240946)。

    【讨论】:

      【解决方案2】:

      对于R8 收缩器,可以将-verbose 开关添加到proguard.cfg 文件中。有一个选项:

      --pg-conf proguard.cfg
      

      build.gradle 还显示了如何提供默认的proguardArguments

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多