android 代码混淆总结
2011-08-31 14:39
477 查看
default.properties文件加入:
target=android-7
proguard.config=proguard.cfg
以上两句
proguard.cfg 文件:
-optimizationpasses 7
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-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 com.android.vending.licensing.ILicensingService
<!-- 百度api使用后必须加下面这段 -->
-keep class com.baidu.mapapi.** {*;}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclassmembers class **.R$* {
public static <fields>;
}
<!-- 序列化后必须使用下面这段 -->
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
补充一下:
-dontwarn com.google.android.gcm.**
-dontwarn net.nend.android.**
-dontwarn com.google.ads.**
也可以用这样的方式解决使用第三方包后出现的无法混淆的问题,大概的异常是:
Note: there were 160 duplicate class definitions.
Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
You should check if you need to specify additional program jars.
target=android-7
proguard.config=proguard.cfg
以上两句
proguard.cfg 文件:
-optimizationpasses 7
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-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 com.android.vending.licensing.ILicensingService
<!-- 百度api使用后必须加下面这段 -->
-keep class com.baidu.mapapi.** {*;}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclassmembers class **.R$* {
public static <fields>;
}
<!-- 序列化后必须使用下面这段 -->
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
补充一下:
-dontwarn com.google.android.gcm.**
-dontwarn net.nend.android.**
-dontwarn com.google.ads.**
也可以用这样的方式解决使用第三方包后出现的无法混淆的问题,大概的异常是:
Note: there were 160 duplicate class definitions.
Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
You should check if you need to specify additional program jars.
相关文章推荐
- android 通过eclipse混淆代码 打包 + proguard 总结
- Android 混淆代码总结
- Android 混淆代码有关问题总结
- Android 混淆代码总结
- Android开发中混淆代码总结
- Android代码混淆的写法总结
- Android 混淆代码总结
- ProGuard总结和混淆Android代码中遇到的问题的解决方法以及寻找getSomething游戏
- android 混淆代码异常总结
- Android 混淆代码总结
- Android 混淆代码总结
- Android 混淆代码总结
- Android 混淆代码总结
- Arcgis For Android项目代码proguard混淆问题总结
- 【转】Android 混淆代码总结
- Android 混淆代码总结
- android 通过eclipse混淆代码 打包 + proguard 总结
- Android 混淆代码总结
- android 通过eclipse混淆代码 打包 + proguard 总结
- Android 混淆代码总结