我想创建安全库模块,没有人可以从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'
}
}
答案 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,因此它们不使用任何配置。 应用程序项目模糊了整个代码库,包括任何引用的库,因此需要对应用程序代码和库代码进行适当的配置。