如何使用Proguard混淆Android库(.aar)?

4

我希望使用proguard对.aar库进行混淆以便分发,我尝试了许多互联网上的解决方案,但到目前为止都没有成功,只有一些代码被混淆。有人能帮我解决这个问题吗?


请参考以下两个链接:https://dev59.com/El0a5IYBdhLWcg3wipTk?rq=1 和 https://dev59.com/0V8d5IYBdhLWcg3wTQon。这些链接提供了关于如何在Android库(AAR)中包含ProGuard配置以及ProGuard忽略库配置文件的信息。 - Manohar
@Redman 感谢您的快速回复,我已经查看了上面的链接,但它会在一定程度上混淆代码,并且资源文件夹仍然保持不变。 - Niranjan S
1个回答

0
在你的 build.gradle 中,在 defaultConfig 下添加 consumerProguardFiles:
 android {
        compileSdkVersion Integer.parseInt("${COMPILE_SDK}")
        buildToolsVersion "${BUILD_TOOLS_VERSION}"

        defaultConfig {
            targetSdkVersion Integer.parseInt("${TARGET_SDK}")
            minSdkVersion Integer.parseInt("${MIN_SDK}")
            consumerProguardFiles 'consumer-proguard-rules.pro'
        }
    }

在您的库项目根目录下添加一个名为consumer-proguard-rules.pro的文件。该文件应包含在库项目的build.gradle中提到的所有依赖项的proguard规则。您应该为您的POJO类、带注释的接口以及其他需要免受proguard清理或混淆的类添加保留规则。 如果您缩小资源,您应该在res(例如res/raw)下的资源中添加keep.xml文件。在此文件中,您可以指定要保留的可绘制对象或布局。如果您在代码中使用反射调用getResources().getIdentifier(..)来调用资源,则应像这样添加您的可绘制对象。

<?xml version="1.0" encoding="utf-8"?>
<resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="safe"
    tools:keep="@layout/layout1, @drawable/icon1,@drawable/icon2,@drawable/img_*"/>

您可以使用 * 告诉 Proguard 保留 drawable 文件夹下以 img_ 开头的所有可绘制对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接