gpt4 book ai didi

java - 在多模块项目上运行 Proguard 作为 "one piece"

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:00 35 4
gpt4 key购买 nike

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 配置使用它。这里需要自定义构建系统,除非有任何已知的解决方案?

这里需要的是:

  • Java-一起编译所有子模块
  • Proguard-将它们混淆在一起
  • 单独运行所有剩余的构建过程

每个模块的正常构建过程在哪里:- 编译 -> 做所有事情,包括。混淆 -> 打包

直接设置在编译 Core 之后的第一个子模块时失败。如果只能将 Proguard mapping.txt 作为输入传递给 Java 编译器就好了……但我找不到这样的选项。有什么想法吗?

谢谢!!!

最佳答案

Issue: I do not see how to use it with straightforward gradle configuration. Custom build system is needed here, Unless there is a any known solution?

因此,您正在寻找“自定义构建系统”,因为您不知道如何在 gradle 中执行此操作。但如果这可以在 gradle 中解决,你会想使用它,对吗?

要使用 gradle 保护库,您有 2 个选择:

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

这里用代码示例进行了详细解释,所以我不打算复制答案:https://stackoverflow.com/a/42758629/1516973

关于java - 在多模块项目上运行 Proguard 作为 "one piece",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44354081/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com