在多模块项目上运行 Proguard 作为PP_8



tldr:如何将proguard映射传递到javac以汇编与混淆的库?

那很长,但是我看不到如何使其短:

背景:我有以下产品设置:

Android Studio项目 - 库模块 - (子(模块核心 - (sub(模块A - (子(模块B - (sub(模块C - 示例应用程序模块 - ...其他模块

库中的每个库s,b,c参考类中的每个库,但a,b,c彼此独立。概念上类似于播放服务,其中用户只能具有代码和所需的子模块。每个库子模型都有外部API,但也有许多内部类目标是能够作为独立的AAR-S。

分发核心A,B,C。

目标:混淆所有子模型一起,仅暴露于公共API,但以混淆/优化的形式包装并分别分发它们。

问题:我看不到如何使用直接的Gradle配置使用它。除非有任何已知解决方案,否则这里需要自定义构建系统?

这里需要的是:

  • Java-Compile所有子模块一起
  • proguard-obfuscraccation
  • 单独运行所有其余的构建过程

每个模块的正常构建过程是: - 汇编 ->全力以赴。混淆 ->软件包

直截了当的设置在核心之后的第一个子模块的汇编时失败。如果只能将proguard映射传递给java编译器的输入...但是我找不到这样的选择。有什么想法吗?

谢谢!

问题:我看不到如何与直接的gradle一起使用 配置。除非有一个自定义构建系统,除非有一个 任何已知的解决方案?

因此,您正在寻找一个"自定义构建系统",因为您不知道如何在Gradle中做。但是,如果可以在Gradle中解决此问题,您想使用它,对吧?

到与gradle一起演奏库,您有2个选项:

  • 每个库的运行proguard独立:在每个模块中,设置minifyEnabled true,然后使用proguardFiles函数设置您的 proguard.txt.txt file。 file。
  • 仅在您的应用模块中运行Proguard :在每个模块中,设置minifyEnabled false,然后使用consumerProguardFiles函数传递 proguard.txt.txt 文件,从每个库到主模块。

此处用代码示例详细说明,因此我不会复制答案:https://stackoverflow.com/a/42758629/1516973

我遇到了同样的问题,我已经在我的个人网站上写了这篇文章。

本质上,您要寻找的是maven-publish Gradle插件,它可以使您可以将库模块包装到AAR并方便地管理和分发它们,同时保留其依赖项的信息。

您可以将此插件配置为包装特定的buildType,您将启用Proguard obfuscation。

最新更新