android – 如何告诉Proguard混淆类名

前端之家收集整理的这篇文章主要介绍了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相关文章