Kir*_*l K 7 java android proguard android-proguard
TLDR:如何将proguard映射传递给javac以针对混淆的库进行编译?
这很长,但我不知道如何缩短它:
背景: 我有以下产品设置:
Android Studio项目 - 库模块 - (子)模块核心 - (子)模块A - (子)模块B - (子)模块C - 示例应用程序模块 - ...其他模块
每个库子模块A,B,C在Core中引用类,但A,B,C在它们之间独立.概念上类似于Play服务,其中用户只能拥有代码和所需的子模块.每个库子模块都有外部API,但也有许多内部类.目标是能够将Core,A,B,C作为独立的aar-s进行分发.
目标:将 所有子模块混淆在一起,只留下公开的API,但是以混淆/优化的形式单独打包和分发它们.
问题: 我没有看到如何使用直接的gradle配置.这里需要自定义构建系统,除非有任何已知的解决方案?
这里需要的是:
每个模块的正常构建过程在哪里: - 编译 - >执行所有操作.混淆 - >包
在Core之后编译第一个子模块时,直接设置失败.如果只能将Proguard mapping.txt作为Java编译器的输入传递......但我找不到这样的选项.有任何想法吗?
谢谢!!!
问题:我不知道如何通过简单的 gradle 配置来使用它。这里需要自定义构建系统,除非有任何已知的解决方案?
因此,您正在寻找“自定义构建系统”,因为您不知道如何在 gradle 中执行此操作。但如果这个问题可以在 gradle 中解决,你会想使用它,对吗?
要使用 gradle 保护库,您有 2 个选择:
minifyEnabled true并使用proguardFiles函数来设置您的proguard.txt文件。minifyEnabled false并使用函数将proguard.txtconsumerProguardFiles文件从每个库传递到主模块。这里用代码示例详细解释了,所以我不打算复制答案:/sf/answers/2993104061/
我也遇到了同样的问题,我在我的个人网站上写了这篇文章。
本质上,您正在寻找的是maven-publishGradle 插件,它允许您将库模块打包到 AAR 并方便地管理和分发它们,同时保留有关其依赖项的信息。
您可以配置此插件来打包buildType您将启用混淆器的特定插件。