我想用proguard来混淆类名.我在Proguard.cfg中有这一行
-keepclasseswithmembers class * {
public static <fields>;
}
-keepnames class * implements java.io.Serializable
-keep public class com.google.**
Run Code Online (Sandbox Code Playgroud)
而且我注意到没有混淆的是类名.所以运行jdgui我看到com/test/abcd/ActualClass.java公共类ActualClassName扩展Activity等
此外,我看到返回真正的类名的方法.喜欢
ActualClassname aa();
Run Code Online (Sandbox Code Playgroud)
和导入语句一样
import com.abcd.ActualClassName
Run Code Online (Sandbox Code Playgroud)
如何让Proguard对类名本身进行模糊处理.它不仅适用于我看到的活动,我的适配器也没有被混淆.好吧有混淆但不是类名.
上面的规则是什么阻止了类名被混淆了?
更新:我已经删除了上面的规则,并且没有从Android扩展任何东西的Utility类没有被混淆.我现在想知道是否有一些隐含的规则来保持类的类名被保存为类派生类的类?名称未被混淆的类有一些共同点:
1)静态方法2)导入其他类型,这些类型保存为源自活动或可序列化的类型.3)他们有方法与其他类的参数(其中一些可能需要保留).
但是,我没有特别要求保留这些实用程序类的地方.
小智 1
我认为您的问题来自您的第一行: '-keepclasseswithmembers' 包含类名称,因此在您的情况下,任何具有静态字段的类都将保留其名称。将其更改为简单的“-keepclassmembers”将混淆类名称,同时保持静态字段完好无损(我假设您想要这样做)。
也就是说,我不确定你为什么要这样做。如果您尝试保留静态变量名称,那么您是否也不想保留类名称,看看您将如何访问静态字段?为什么要尝试保留所有静态变量名称?
| 归档时间: |
|
| 查看次数: |
10422 次 |
| 最近记录: |