在多模块 SDK Android 库项目中配置 proguard

Posted

技术标签:

【中文标题】在多模块 SDK Android 库项目中配置 proguard【英文标题】:Configure proguard in a multimodule SDK Android library project 【发布时间】:2021-12-29 03:55:24 【问题描述】:

我正在开发一个即将拆分为单独模块的 android SDK,其中一些代码在其他模块之间共享,即:

共享课程 具有功能 #1 的 SDK 具有功能 #2 的 SDK

需要混淆输出 AAR。使用单个模块这不是问题,但我找不到如何使用 Proguard 正确配置整个项目。

如果我想发布所有这些库的新版本,Proguard 混淆是如何工作的?所有模块都会被单独混淆吗?如何确保一次对所有模块进行混淆处理,并且库的发布版本将正确引用位于 shared 模块中的所有工件?

【问题讨论】:

【参考方案1】:

不确定我是否理解问题。

但如果你想现在发布 2 个 SDK 而不是 1 个(拆分前),我认为设置应该不会有太大差异。

只需确保您在这些 SDK 中有 proguard 文件,并且您在特定于该 SDK(模块)的构建脚本中使用它。然后运行:sdk:assembleRelease 之类的东西就完成了。

release 
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'library.pro'

本期详细介绍: Obfuscating the .aar files

我知道shared模块没有发布,所以你只需要定义其他模块将使用的特定proguard规则,如下所示:

 release 
      minifyEnabled true
      consumerProguardFiles 'onboarding-proguard-rules.pro'
 

【讨论】:

以上是关于在多模块 SDK Android 库项目中配置 proguard的主要内容,如果未能解决你的问题,请参考以下文章