【发布时间】:2015-11-27 13:58:03
【问题描述】:
我正在构建一个 android 框架,我需要对 jar 进行混淆和缩小以将其发送给用户。
我正在使用 android SDK 中包含的 proguard 工具,我对输出 jar 有以下要求:
- 保留输入 jar 中包含的所有类,但对其进行混淆处理。
- 不要混淆`AndroidManifest.xml中调用的类的类名
- 不要混淆类名和公共方法名/属性,因为所使用的类具有用户接口,但要针对其内容进行混淆。
为此,我使用以下配置:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-keep, allowobfuscation class com.company.*
-keepclassmembers, allowobfuscation class * {
*;
}
-keepnames class com.company.MyClass { *; }
-keepclassmembernames class com.company.MyClass {
public <methods>;
public <fields>;
#!private *; also tried this but it didn't work
}
但是,即使内容被混淆,我的私有类名称和属性仍然具有相同的名称。我是否遗漏了通配符中的某些内容?
【问题讨论】:
-
您真的必须使用
-keepnames选项吗?我认为这是使您的混淆不正确的原因。