我想创建安全库模块,没有人可以从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 回答
看这篇文章:https://stackoverflow.com/a/10992604/8770663
告诉Proguard如何工作,你必须更精确 .
首先更好地使用别名
-keepnames
而不是-keep,allowshrinking
. 然后只保留公共类和受保护的类成员 . 实际上意思是不缩小这些部分 .这些是您进入图书馆的入口点 . 默认情况下,所有非公开或受保护的内容都将缩小和/或混淆 .