在多模块 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在多平台 Android 模块中配置 Kotlin jvmTarget?

多模块Android项目中的单个皮棉报告

在多模块化项目中查看解析器配置

Android Studio在多Module中依赖aar的配置问题

从java模块引用android库

在使用 gradle 缓存时,在多风格的 android 库中使用不同的 res 值会在编译的 APK 中使用错误的值