【问题标题】:How to add r8 rules in android?如何在android中添加r8规则?
【发布时间】:2020-01-06 00:55:20
【问题描述】:

我们如何在 android 项目中为依赖项添加 R8 规则,并从缩小和混淆中排除文件和包?

【问题讨论】:

标签: android performance proguard android-r8


【解决方案1】:

添加 R8 规则类似于 progurad 规则,但有些依赖我们不需要在 R8 中添加规则,可能会在文档中提及。从 Android Studio 3.4 R8 开始,R8 是默认的代码收缩器。

build.gradle 应用模块中添加这一行

 buildTypes {
    release {
        minifyEnabled true //Important step
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

选择 proguard-rules.pro

添加规则以排除包或文件

-keep class com.xyz.model.** { *; }

以上代码将模型包排除在缩小范围之外,最好将您的网络 pojo 类排除在缩小范围之外。

如果您添加的任何依赖项具有 proguard/R8 规则,请同时添加它,注意:Retrofit 等库我们不需要在 R8 中添加它,它将在相应的 github 页面中提及

    -keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}

上面的例子是针对绿色 bot proguard 规则的。只需将其复制粘贴到您的 proguard-rules.pro 文件中

供参考:https://www.youtube.com/watch?v=yduedsaxfDw

【讨论】:

  • retrofit 的官方文档square.github.io/retrofit 提到你必须添加retrofit 的规则
  • 谢谢,请检查@ELTEGANIMOHAMEDHAMMAD github.com/square/retrofit 如果您使用的是 R8,则会自动包含收缩和混淆规则。 ProGuard 用户必须手动添加此文件中的选项。 (注意:您可能还需要作为此库依赖项的 OkHttp 和 Okio 的规则)
猜你喜欢
  • 2020-11-16
  • 2018-09-22
  • 1970-01-01
  • 2021-12-23
  • 2020-11-20
  • 2011-11-10
  • 2018-05-09
  • 2013-11-11
  • 2015-03-27
相关资源
最近更新 更多