【问题标题】:Proguard Files for Library project and Application Project库项目和应用项目的 Proguard 文件
【发布时间】:2017-05-14 21:53:34
【问题描述】:

我正在使用第三方 .aar 项目,他们在 aar 项目中启用了 proguard。在我的应用程序项目中,我也启用了 Proguard,但它给了我错误。

那么,我需要将他们的(.aar 项目)proguard 规则包含在我的 proguard 配置文件中还是有其他可能性?

我在博客和帖子中读到,最好的方法是在没有 proguard 的情况下包含 .aar 项目,然后在 aar 和整个应用程序项目上运行 proguard。

如果我在应用程序上运行 proguard,它会影响导入库的(已经 proguarded)代码吗?

【问题讨论】:

    标签: android proguard obfuscation android-proguard


    【解决方案1】:

    那么,我需要将他们的(.aar 项目)proguard 规则包含在我的 proguard 配置文件中还是有其他可能性?

    引用the documentation:

    您可以通过将 ProGuard 配置文件添加到包含其 ProGuard 指令的库中来启用库上的代码收缩。构建工具将此文件嵌入到为库模块生成的 AAR 文件中。当您将库添加到应用模块时,库的 ProGuard 文件会附加到应用模块的 ProGuard 配置文件 (proguard.txt)。

    因此,如果库模块在其defaultConfig 中包含consumerProguardFiles 'lib-proguard-rules.txt'(请参阅文档),原则上,这些规则将自动应用。

    我在博客和帖子中读到,最好的方法是在没有 proguard 的情况下包含 .aar 项目,然后在 aar 和整个应用程序项目上运行 proguard。

    AFAIK,这是典型的计划。因此,AAR 被单独保留,应用程序上应用了 ProGuard。

    如果我在应用程序上运行 proguard,它会影响导入库的(已经 proguarded)代码吗?

    AFAIK,库的代码不应该通过 ProGuard 运行。

    【讨论】:

    • 那么,我可以得出结论,我不需要将库模块 proguard 规则包含在我的应用程序 proguard 文件中吗?
    • @AmanVerma:如果您的 AAR 文件按照文档建议的方式设置(使用 consumerProguardFiles并且您使用的是相当新的 buildToolsVersion(如我忘记了 consumerProguardFiles 是什么时候添加的),那么您应该不需要在应用程序模块的规则中从 AAR 复制 ProGuard 规则。话虽如此,由于 Android Studio 现在拥有可爱的 APK Analyzer,您可能会检查 release 构建的结果并确认 ProGuard 确实删除/混淆了您对库的期望。 IOW,“信任,但要验证”。 :-)
    • 经过数小时的挖掘,我不得不在应用程序的 proguard 文件中包含 AAR proguard 规则,它运行良好。也许 AAR 没有得到适当的保护。感谢您提供详尽的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多