【问题标题】:android, why library module with minifyEnabled falseandroid,为什么库模块带有 minifyEnabled false
【发布时间】:2020-12-28 18:17:49
【问题描述】:

有一个使用一些库的应用程序。 看到lib有

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

proguard-rules.pro 有一些规则来保留一些类。

我相信是因为 R8 默认情况下是用于收缩/混淆的,minifyEnabled false 将禁用它。 如果这是真的,这是否意味着 lib 的 aar 将在没有收缩/混淆的情况下构建?

如果应用默认开启 R8,应用会做收缩/混淆,包括依赖库?

【问题讨论】:

  • 你的意思是库本身在它自己的项目中有 minifyEnabled false 吗?
  • @MahmoudOmara,是的,在 lib 的 build.gradle 中它的 minifyEnabled 为 false。
  • 您需要自定义您自己的应用程序以拥有 minifyEnabled 和 proguard 规则,只需确保添加您曾经使用过的每个库都在您自己的 proguard 文件中的规则
  • 在库中设置 minifyEnabled false 有什么好处?
  • 没有任何好处,你不能编辑你正在导入的库中的代码,除非你复制粘贴整个东西并将源代码包含在你自己的项目中

标签: android proguard r8-obfuscation


【解决方案1】:

对于库项目,minifyEnabled false 表示不会使用 R8 处理最终的 AAR,即不会执行代码优化或死代码删除。

如果应用程序项目有minifyEnabled true,R8 将处理应用程序代码、所有外部 (Maven) 库和本地库项目,并使用应用程序中指定的规则来执行此操作。

作为一般规则,R8 仅在生成最终二进制文件(AAR 或 APK 或应用程序包)时运行,并且是否启用它在生成该工件的项目(库或应用程序项目)中指定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2020-08-24
    • 1970-01-01
    • 2017-01-26
    • 2016-08-28
    • 2017-12-10
    • 1970-01-01
    相关资源
    最近更新 更多