代码之家  ›  专栏  ›  技术社区  ›  toto_tata

Android/java:从ProGuard到R8的转换/迁移?

  •  5
  • toto_tata  · 技术社区  · 6 年前

    我想知道如何从 前卫 .

    我应该从Gradle文件中删除Proguard相关的行并添加 android.enableR8 = true

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  41
  •   Community T.Woody    4 年前

    Proguard是由GuardSquare开发和维护的,而R8是由Android团队开发和维护的,这意味着它们是两个不同的产品,尽管R8与Proguard兼容。

    从这里看 https://www.guardsquare.com/en/blog/proguard-and-r8

    对开发者来说,好消息是 ProGuard配置(可能是从Stackoverflow中折衷复制的), 选项。值得注意的是,R8没有实现选项-whyareyoukeeping 和-addconfigurationdebugging,我们认为这是快速

    对, android.enableR8 = true 将启用R8功能。

    另外请注意,R8目前(在AndroidStudio 3.2.1时代)不支持Android存档库(AAR)项目。它只在生成APK文件时使用。


    @Archie , 3.4.0款 及以上, R8型

    参见: https://developer.android.com/studio/releases#r8-default


    对于从Proguard到R8的转换,可以执行以下步骤:

    1禁用Proguard

    更新 buildTypes { } 禁用Proguard的配置,例如 release 生成类型:

       android {
           ...
           buildTypes {
               release {
                   useProguard false // <-- disable proguard
                   minifyEnabled true // <-- enable minification
                   proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
               }
           }
           ...
       }
    

    useProguard false . 默认为R8。

    2( 可选

    在您的 proguard-rules.pro 输出R8在构建项目时应用的所有规则的完整报告。

    // You can specify any path and filename.
    -printconfiguration <your-path>/full-r8-config.txt
    

    三。生成模糊处理的应用程序。

    ./gradlew assembleRelease
    

    )微调和故障排除

    找到你的 <your-path>/full-r8-config.txt 微调配置或进行故障排除(如果有)。

    参考文献:

    https://developer.android.com/studio/build/shrink-code.html#configuration-files