Android混淆不起作用

时间:2015-05-04 11:25:12

标签: android

我的要求; -

在我的Android项目中( Example1 )我正在使用另一个Android项目作为库( Example2 )..

example2 位于以下类: -

public class **Chatter1** {
     public static final String info = "busyMan";
        public static final String pres = "SeeYou";

        public Chatter1()
        {
        }
}

现在,在使用Proguard(用于混淆)之后,我想隐藏这个类的字符串..

所以在我的“Project.properties”中我做了: -

-injars Example2
-outjars example2
-libraryjars Example2

-printmapping mapping.txt
-verbose
-dontoptimize
-dontpreverify
-dontshrink
-dontskipnonpubliclibraryclassmembers
-dontusemixedcaseclassnames
-keepparameternames
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep public class * {
    public protected *;
}



-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.app.Fragment
-keep public class * extends com.example2.chatter1


-keepclassmembernames class * {
    java.lang.Class class$(java.lang.String);
    java.lang.Class class$(java.lang.String, boolean);
}

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

但是我仍然可以从Chatter1类中获取字符串。它没有隐藏。我怎么能隐藏这些字符串???

****是否可以通过混淆隐藏字符串值?我该怎么做?

1 个答案:

答案 0 :(得分:2)

ProGuard无法模糊/加密常量。您可能想要实现自己的混淆代码或尝试使用DexGuard:http://www.saikoa.com/dexguard