我希望混淆类名。我在 Proguard.cfg 中有这一行
-keepclasseswithmembers class * {
public static <fields>;
}
-keepnames class * implements java.io.Serializable
-keep public class com.google.**
我注意到没有混淆的是类名。所以运行 jdgui 我明白了
com/test/abcd/实际类.java
公共类实际类名扩展活动等
此外,我看到方法返回真实的类名。喜欢
ActualClassname aa();
并导入如下语句
import com.abcd.ActualClassName
如何让 Proguard 混淆类名本身。我看到我的适配器并没有被混淆,这不仅仅是针对活动。嗯,确实存在混淆,但类名却没有。
上述规则是否可以防止类名被混淆?
更新:我已经删除了上述规则,并且不从 Android 扩展任何内容的实用程序类不会被混淆。我现在想知道是否有一些隐式规则关于保留从像 Activity 派生类一样保留的类引用的类的类名?名称未被混淆的类有一些共同点:
1)静态方法
2) 导入其他类型,这些类型保留为源自活动或可序列化的类型。
3)它们具有带有其他类参数的方法(其中一些可能需要保留)。
然而,我没有特别要求保留这些实用程序类。
There are several class that appear in your code that must retain the same fully qualified class name in order for android to be able to find them. One example as above are all Activity
classes, as they are defined in the manifest by their full name as a String. If proguard were to rename the class then Android would no longer be able to find them.
典型的 Proguard 配置将引用 Android SDK 中的 Proguard 配置,其中包括几行重要的行,如下所示:
-keep public class * extends android.app.Activity
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)