首页 文章

Android Library模块使用proguard

提问于
浏览
1

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

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

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

我也尝试允许shrinkresource但是不存在相同的错误包

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

gradle代码

buildTypes {

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

2 回答

  • 1

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

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

  • 0

    告诉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 *; }
    

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

相关问题