微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/android/315577.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐