Android Library模块使用proguard

时间:2017-05-22 11:07:22

标签: android android-proguard

我想创建安全库模块,没有人可以从apk文件中提取代码。但是当尝试在库gradle中启用proguard时获取错误包不存在。然后我在proguard规则文件中添加以下行

-keep class com.alprocr.** { *; }
-keep class com.xyz.alpr.** { *; }
-keep class com.xyz.alpr.doc.** { *; }

添加此代码应用程序工作文件后。但是当我使用apktool从apk中提取代码时,我从apk文件中获得了完整的源代码。当有人试图提取apk文件时,我想要不可读的代码。有可能吗?

我也尝试允许收缩资源但是不存在相同的错误包

-keep,allowshrinking class com.alprocr.** { *; }
-keep,allowshrinking class com.xyz.alpr.** { *; }
-keep,allowshrinking class com.xyz.alpr.doc.** { *; }

gradle code

buildTypes {

        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

2 个答案:

答案 0 :(得分:1)

你必须更准确地告诉Proguard如何工作。

首先,最好使用别名-keepnames而不是-keep,allowshrinking。然后只保留公共类和受保护的类成员。实际上意思是不缩小这些部分。

-keep,allowobfuscation public class com.alprocr.** { public protected *; }
-keep,allowobfuscation public class com.xyz.alpr.** { public protected *; }
-keep,allowobfuscation public class com.xyz.alpr.doc.** { public protected *; }

这些是您进入图书馆的入口点。默认情况下,所有非公开或受保护的内容都将缩小和/或混淆。

答案 1 :(得分:0)

  

库项目本身不运行ProGuard,因此它们不使用任何配置。   应用程序项目模糊了整个代码库,包括任何引用的库,因此需要对应用程序代码和库代码进行适当的配置。

看这篇文章: https://stackoverflow.com/a/10992604/8770663