如何使用proguard混淆android库(.aar)?

时间:2017-05-29 06:52:40

标签: android obfuscation android-library android-proguard aar

我想使用proguard混淆 .aar 库以进行分发,我在互联网上尝试了很多解决方案,但到目前为止还没有任何工作,只有一些代码被混淆了。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分: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类添加一个保留规则,添加注释接口以及您需要保护其他类免于清理或混淆的其他类。 如果缩小资源,则应在res下的资源中添加keep.xml文件(例如res / raw)。在此文件中,您可以指定要保留的drawable或布局。你在代码中检查你使用reflexion来调用getResources()。getIdentifier(..)的资源,如果是这样你就像这样添加你的drawables。

<?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保留所有以drawg文件夹下的img_开头的drawable。