Android项目在Eclipse下的混淆

来源:互联网 发布:亿世界系统源码 编辑:程序博客网 时间:2024/05/29 09:32

Android项目在Eclipse下的混淆步骤

  1. 首先将项目下的project.properties中的#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt注释打开
  2. 然后在项目下的proguard-project.txt文件中进行修改
  3. 修改完成之后利用Eclipse自带的打包工具进行签名打包即可
  4. 最后可以将打包成功后的进行反编译操作,最终会发现一些代码确实被混淆了,混淆代码的目的即达到了

具体操作如下

# To enable ProGuard in your project, edit project.properties# to define the proguard.config property as described in that file.## Add project specific ProGuard rules here.# By default, the flags in this file are appended to flags specified# in ${sdk.dir}/tools/proguard/proguard-android.txt# You can edit the include path and order by changing the ProGuard# include property in project.properties.## For more details, see#   http://developer.android.com/guide/developing/tools/proguard.html# Add any project specific keep options here:# If your project uses WebView with JS, uncomment the following# and specify the fully qualified class name to the JavaScript interface# class:#-keepclassmembers class fqcn.of.javascript.interface.for.webview {#  public *;#}#指定代码的压缩级别-optimizationpasses 5#包明不混合大小写-dontusemixedcaseclassnames#不去忽略非公共的库类-dontskipnonpubliclibraryclasses #优化  不优化输入的类文件-dontoptimize #预校验-dontpreverify #混淆时是否记录日志-verbose # 混淆时所采用的算法#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*-allowaccessmodification#保护注解-keepattributes *Annotation*-keepattributes Signature-keepattributes Exceptions,InnerClasses,Signature-keepattributes SourceFile,LineNumberTable-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# 保持哪些类不被混淆-keep public class * extends android.app.Fragment-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#如果有引用v4包可以添加下面这行-keep public class * extends android.support.v4.app.Fragment#忽略警告-ignorewarning#####################记录生成的日志数据,gradle build时在本项目根目录输出#################apk 包内所有 class 的内部结构-dump class_files.txt#未混淆的类和成员-printseeds seeds.txt#列出从 apk 中删除的代码-printusage unused.txt#混淆前后的映射-printmapping mapping.txt#####################记录生成的日志数据,gradle build时 在本项目根目录输出-end################################混淆保护自己项目的部分代码以及引用的第三方jar包library#########################-libraryjars libs/armeabi/libBaiduMapSDK_base_v3_6_1.so-libraryjars libs/armeabi/libBaiduMapSDK_cloud_v3_6_1.so-libraryjars libs/armeabi/libBaiduMapSDK_map_v3_6_1.so-libraryjars libs/armeabi/libBaiduMapSDK_radar_v3_6_1.so-libraryjars libs/armeabi/libBaiduMapSDK_search_v3_6_1.so-libraryjars libs/armeabi/libBaiduMapSDK_util_v3_6_1.so-libraryjars libs/armeabi/liblocSDK6a.so-libraryjars libs/armeabi-v7a/libBaiduMapSDK_base_v3_6_1.so-libraryjars libs/armeabi-v7a/libBaiduMapSDK_cloud_v3_6_1.so-libraryjars libs/armeabi-v7a/libBaiduMapSDK_map_v3_6_1.so-libraryjars libs/armeabi-v7a/libBaiduMapSDK_radar_v3_6_1.so-libraryjars libs/armeabi-v7a/libBaiduMapSDK_search_v3_6_1.so-libraryjars libs/armeabi-v7a/libBaiduMapSDK_util_v3_6_1.so-libraryjars libs/armeabi-v7a/liblocSDK6a.so-libraryjars libs/arm64-v8a/libBaiduMapSDK_base_v3_6_1.so-libraryjars libs/arm64-v8a/libBaiduMapSDK_cloud_v3_6_1.so-libraryjars libs/arm64-v8a/libBaiduMapSDK_map_v3_6_1.so-libraryjars libs/arm64-v8a/libBaiduMapSDK_radar_v3_6_1.so-libraryjars libs/arm64-v8a/libBaiduMapSDK_search_v3_6_1.so-libraryjars libs/arm64-v8a/libBaiduMapSDK_util_v3_6_1.so-libraryjars libs/arm64-v8a/liblocSDK6a.so-libraryjars libs/x86/libBaiduMapSDK_base_v3_6_1.so-libraryjars libs/x86/libBaiduMapSDK_cloud_v3_6_1.so-libraryjars libs/x86/libBaiduMapSDK_map_v3_6_1.so-libraryjars libs/x86/libBaiduMapSDK_radar_v3_6_1.so-libraryjars libs/x86/libBaiduMapSDK_search_v3_6_1.so-libraryjars libs/x86/libBaiduMapSDK_util_v3_6_1.so-libraryjars libs/x86/liblocSDK6a.so-libraryjars libs/x86_64/libBaiduMapSDK_base_v3_6_1.so-libraryjars libs/x86_64/libBaiduMapSDK_cloud_v3_6_1.so-libraryjars libs/x86_64/libBaiduMapSDK_map_v3_6_1.so-libraryjars libs/x86_64/libBaiduMapSDK_radar_v3_6_1.so-libraryjars libs/x86_64/libBaiduMapSDK_search_v3_6_1.so-libraryjars libs/x86_64/libBaiduMapSDK_util_v3_6_1.so-libraryjars libs/x86_64/liblocSDK6a.so-libraryjars libs/android-support-v4.jar-libraryjars libs/BaiduLBS_Android.jar-libraryjars libs/picasso-2.3.3.jar-libraryjars libs/fastjson-1.1.45.android.jar-libraryjars libs/umeng-analytics-v5.6.4.jar-libraryjars libs/xUtils-2.6.14.jar-libraryjars libs/SocialSDK_renren_1.jar-libraryjars libs/universal-image-loader-1.9.3.jar#如果引用了v4或者v7包-dontwarn android.support.**-keep class android.** {*;}-dontwarn android.**#友盟混淆-keep class com.umeng.**{*;}-dontwarn com.umeng.**#百度地图混淆-keep class com.baidu.** {*;}-dontwarn com.baidu.**-keep class vi.com.gdi.bgl.android.**{*;}#xUtils混淆#这块做的就是自己项目中的一些具体类的混淆处理#可以自己试着处理下#一般情况下将自己的model最好不要混淆的 其余的可以视情况而定-keep class com.aragoncs.mennuicitymanager.model.** { *; }-keep class com.aragoncs.mennuicitymanager.util.**-keep class com.aragoncs.mennuicitymanager.constant.** { *; }-dontwarn org.apache.commons.net.**-keep class * extends java.lang.annotation.Annotation { *; }-dontwarn android.webkit.WebView-dontwarn android.support.**-dontwarn com.facebook.**  -dontwarn com.lidroid.xutils.**  -dontwarn com.umeng.**-dontwarn com.squareup.**-dontwarn com.ta.**-dontwarn com.ut.**-dontwarn org.android.**-dontwarn com.dnurse.**-dontwarn com.alibaba.fastjson.**-dontwarn org.achartengine.**-dontwarn com.nineoldandroids.**-dontwarn android.**-keep enum com.lidroid.xutils.** -keep enum com.facebook.** -keep enum com.umeng.** -keep enum com.squareup.** -keep enum com.ta.** -keep enum org.android.** -keep enum com.dnurse.** -keep enum com.alibaba.fastjson.** -keep enum org.achartengine.** -keep enum com.nineoldandroids.** -keep enum android.**-keep public interface com.facebook.** -keep public interface com.lidroid.xutils.** -keep public interface com.umeng.** -keep public interface com.squareup.** -keep public interface com.ta.** #-keep public interface org.android.** -keep public interface com.dnurse.** -keep public interface com.alibaba.fastjson.** -keep public interface org.achartengine.** -keep public interface com.nineoldandroids.** -keep public interface abdroid.**-keep class javax.**-keep class android.webkit.**-keep class com.facebook.**{*;}-keep class com.lidroid.xutils.**{*;}-keep class com.squareup.**{*;}-keep class com.ta.**-keep class org.android.**-keep class com.dnurse.**{*;}-keep class com.alibaba.fastjson.**{*;}-keep class org.achartengine.**-keep class com.nineoldandroids.**-keep class android.**#保证自定义View不被混淆 -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*(...);}#保持 native 方法不被混淆-keepclasseswithmembernames class * {    native <methods>;}#保持自定义控件类不被混淆-keepclasseswithmembers class * {    public <init>(android.content.Context);}-keepclasseswithmembers class * {    public <init>(android.content.Context, android.util.AttributeSet);}#保持自定义控件类不被混淆-keepclasseswithmembers class * {    public <init>(android.content.Context, android.util.AttributeSet, int);}#保持自定义控件类不被混淆-keepclassmembers class * extends android.app.Activity {   public void *(android.view.View);}-keepclassmembers class * extends android.app.Activity {  private void *(android.view.View);}-keepclassmembers public class * extends android.view.View {   void set*(***);   *** get*();}-keepclassmembers class * extends android.support.v4.app.Fragment {   public void *(android.view.View);}-keepclassmembers class * extends android.support.v4.app.Fragment {   void *(android.view.View);}#保持 Parcelable 不被混淆-keep class * implements android.os.Parcelable {  public static final android.os.Parcelable$Creator *;}#保持 Serializable 不被混淆-keepnames class * implements java.io.Serializable#保持 Serializable 不被混淆并且enum 类也不被混淆-keepclassmembers class * implements java.io.Serializable {    static final long serialVersionUID;    private static final java.io.ObjectStreamField[] serialPersistentFields;    !static !transient <fields>;    !private <fields>;    !private <methods>;    private void writeObject(java.io.ObjectOutputStream);    private void readObject(java.io.ObjectInputStream);    java.lang.Object writeReplace();    java.lang.Object readResolve();}#保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可#-keepclassmembers enum * {#  public static **[] values();#  public static ** valueOf(java.lang.String);#}#不混淆资源类-keepclassmembers class **.R$* {    public static <fields>;}#避免混淆泛型 如果混淆报错建议关掉#–keepattributes Signature#移除log 测试了下没有用还是建议自己定义一个开关控制是否输出日志#-assumenosideeffects class* android.util.Log {#    public static boolean isLoggable(java.lang.String, int);#    public static int v(...);#    public static int i(...);#    public static int w(...);#    public static int d(...);#    public static int e(...);#}
0 0
原创粉丝点击