android – 如何告诉Proguard混淆类名

我想用proguard来混淆类名.我在Proguard.cfg中有这一行
-keepclasseswithmembers class * {
public static <fields>;
}

-keepnames class * implements java.io.Serializable
-keep public class com.google.**

而且我注意到没有混淆的是类名.所以运行jdgui我明白了
COM /测试/ ABCD / ActualClass.java
public class ActualClassName扩展了Activity等

此外,我看到返回真正的类名的方法.喜欢

ActualClassname aa();

并导入语句如

import com.abcd.ActualClassName

如何让Proguard对类名本身进行模糊处理.它不仅适用于我看到的活动,我的适配器也没有被混淆.好吧有混淆但不是类名.

上面的规则是什么阻止了类名被混淆了?

更新:我已经删除了上面的规则,并且没有从Android扩展任何东西的Utility类没有被混淆.我现在想知道是否有一些隐含的规则来保持类的类名被保存为类派生类的类?名称未被混淆的类有一些共同点:

1)静态方法
2)导入其他类型的类型,如源自活动或可序列化的类型.
3)他们有方法与其他类的参数(其中一些可能需要保留).

但是,我没有特别要求保留这些实用程序类的地方.

解决方法

您的代码中有几个类必须保留相同的完全限定类名,以便 android能够找到它们.上面的一个示例是所有Activity类,因为它们在清单中以其全名作为String定义.如果 proguard重命名该类,那么Android将无法再找到它们.

典型的Proguard配置将引用Android SDK中的Proguard配置,其中包括几个重要的行,如下所示:

-keep public class * extends android.app.Activity

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...