Android中的consumer-rules.pro和proguard-rules.pro有什么区别?
What is the difference between consumer-rules.pro and proguard-rules.pro in Android?
我在 Android 中创建了一个模块以用于我的主应用程序,并且似乎有两个这样的文件
consumer-rules.pro 和 proguard-rules.pro。
我想了解以下内容
- 是否所有模块代码都会被主模块pro-guard规则混淆
即使模块没有指定任何规则?
- Android 中的 consumer-rules.pro 和 proguard-rules.pro 有什么区别?
- 我应该在我的模块中启用 minifyEnabled 吗?
- 我注意到我可以在主模块中为我的模块添加 proguard 规则,这是否意味着
模块中的 pro-guard 规则在主模块中被覆盖?
请指教
我会尽量回答每个问题,即使有不明白的地方也请告诉我!
1。 即使模块没有指定任何规则,所有模块代码是否都会被主要模块的 pro-guard 规则混淆?
混淆不是那样的。当您在应用程序模块中启用 minify 属性 时,它会尝试混淆应用程序模块中可用的代码以及它的第 3 方依赖项,并且您的库模块将被视为第 3 方依赖项。在这里,但它不会触及您的第 3 方依赖项的任何传递依赖项。
2。 Android中consumer-rules.pro和proguard-rules.pro有什么区别?
proguard-rules.pro 是您为模块及其依赖项声明与混淆器相关的规则的文件。
consumer-rules.pro 是您声明可以从消费者 应用于您的模块的规则的文件(无论谁会使用您的 module/library 作为依赖项,通常由库开发人员使用。)
3。 我应该在我的模块中启用 minifyEnabled 吗?
我建议你应该(每个开发者都必须在发布 apk 时做),但要确保一切都按预期工作,因为底层 classes.dex 应用缩小后发生变化。它有助于减少输出 apk 大小、优化代码、混淆 class 文件等等...
4。 我注意到我可以在主模块中为我的模块添加 proguard 规则,这是否意味着模块中的 pro-guard 规则在主模块中被覆盖了?
不,基本上库规则是从库模块本身的 consumer-rules 文件应用的,所以当你在应用程序模块中为库声明这些规则时,它会以相同的方式应用consumer-rules 这基本上表明消费者在缩小时应该使用这些规则。
proguard-rules.pro of library 是你声明你的库的第 3 方依赖规则的地方 (这被认为是传递依赖对于您的应用 module/main 模块) 并且它不会被应用模块规则覆盖。
我希望这是有道理的!
我在 Android 中创建了一个模块以用于我的主应用程序,并且似乎有两个这样的文件 consumer-rules.pro 和 proguard-rules.pro。
我想了解以下内容
- 是否所有模块代码都会被主模块pro-guard规则混淆 即使模块没有指定任何规则?
- Android 中的 consumer-rules.pro 和 proguard-rules.pro 有什么区别?
- 我应该在我的模块中启用 minifyEnabled 吗?
- 我注意到我可以在主模块中为我的模块添加 proguard 规则,这是否意味着 模块中的 pro-guard 规则在主模块中被覆盖?
请指教
我会尽量回答每个问题,即使有不明白的地方也请告诉我!
1。 即使模块没有指定任何规则,所有模块代码是否都会被主要模块的 pro-guard 规则混淆?
混淆不是那样的。当您在应用程序模块中启用 minify 属性 时,它会尝试混淆应用程序模块中可用的代码以及它的第 3 方依赖项,并且您的库模块将被视为第 3 方依赖项。在这里,但它不会触及您的第 3 方依赖项的任何传递依赖项。
2。 Android中consumer-rules.pro和proguard-rules.pro有什么区别?
proguard-rules.pro 是您为模块及其依赖项声明与混淆器相关的规则的文件。
consumer-rules.pro 是您声明可以从消费者 应用于您的模块的规则的文件(无论谁会使用您的 module/library 作为依赖项,通常由库开发人员使用。)
3。 我应该在我的模块中启用 minifyEnabled 吗?
我建议你应该(每个开发者都必须在发布 apk 时做),但要确保一切都按预期工作,因为底层 classes.dex 应用缩小后发生变化。它有助于减少输出 apk 大小、优化代码、混淆 class 文件等等...
4。 我注意到我可以在主模块中为我的模块添加 proguard 规则,这是否意味着模块中的 pro-guard 规则在主模块中被覆盖了?
不,基本上库规则是从库模块本身的 consumer-rules 文件应用的,所以当你在应用程序模块中为库声明这些规则时,它会以相同的方式应用consumer-rules 这基本上表明消费者在缩小时应该使用这些规则。
proguard-rules.pro of library 是你声明你的库的第 3 方依赖规则的地方 (这被认为是传递依赖对于您的应用 module/main 模块) 并且它不会被应用模块规则覆盖。
我希望这是有道理的!