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。