Android中的Consumer-rules.pro和proguard-rules.pro有什么区别?

问题描述 投票:0回答:1

我已经在Android中创建了一个模块以在我的主应用程序中使用,似乎其中有两个文件Consumer-rules.pro和proguard-rules.pro。

我想知道以下事情

  1. 主模块的规则会否混淆所有模块的代码即使模块未指定任何规则?
  2. Android中的consumer-rules.pro和proguard-rules.pro有什么区别?
  3. 我应该在我的模块中启用minifyEnabled吗?
  4. 我注意到我可以在主模块中为我的模块添加proguard规则,这是否意味着主模块中是否覆盖了模块中的保护规则?

请告知。

java android kotlin proguard
1个回答
0
投票

我会尽力回答每个问题,即使让我知道是否有什么问题!

1。 即使模块未指定任何规则,主模块的保护规则也会使所有模块的代码混淆吗?

迷惑不是那样的。当您在应用程序模块中启用minify属性时,它将尝试混淆应用程序模块中可用的代码以及它的第三方依赖关系,并且您的库模块将被视为第三方部门。在这里,但不涉及您的第三方依赖项的任何传递性依赖项>]。


2。 Android中的consumer-rules.pro和proguard-rules.pro有什么区别?

proguard-rules.pro是您在其中声明与proguard相关的规则的文件,它是模块及其依赖项。

consumer-rules.pro

是一个文件,您在其中声明可以从使用者(将模块/库用作依赖项的人,通常由库开发人员使用的人)可以在您的模块上应用的规则。

3。 我应该在我的模块中启用minifyEnabled吗?

我建议您应该(每个开发人员必须在发布apk上做所有事情],但要确保一切都按预期工作,因为基础classes.dex在应用minify后会发生变化。它有助于减小输出apk的大小,优化代码,模糊化类文件等等……


4。 [我注意到我可以在主模块中为我的模块添加proguard规则,所以这意味着该模块中的pro-guard规则在主模块中被覆盖吗?

不,基本上是从库模块本身的consumer-rules

文件中应用库规则,因此,当您在应用程序模块中声明库规则时,它从consumer-rules

中的应用方法相同。基本上表明消费者在缩小时应使用这些规则。库的[[

proguard-rules.pro是您声明库第三方依赖关系的规则的地方((对于您的应用程序模块/主模块,它被视为传递性依赖关系)

并且它没有”不会被应用模块规则覆盖。
我希望这有道理!
© www.soinside.com 2019 - 2024. All rights reserved.