为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心删掉了,没关系,从其他地方拷贝一个过来 2. 最重要的就是在proguard-project.txt添加混淆的申明了: a. 把所有你的jar包都申明进来,例如: -libraryjars libs/apns_1.0.6.jar -libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so -libraryjars libs/armeabi/liblocSDK4.so -libraryjars libs/baidumapapi_v2_3_1.jar -libraryjars libs/core.jar -libraryjars libs/gesture-imageview.jar -libraryjars libs/gson-2.0.jar -libraryjars libs/infogracesound.jar -libraryjars libs/locSDK_4.0.jar -libraryjars libs/ormlite-android-4.48.jar -libraryjars libs/ormlite-core-4.48.jar -libraryjars libs/universal-image-loader-1.9.0.jar b. 将你不需要混淆的部分申明进来,因为有些类经过混淆会导致程序编译不通过,如下: -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 * extends android.support.v4.** -keep public class com.android.vending.licensing.ILicensingService --以上都是API里边的类,最好都要避免混淆 有些很特殊的,例如百度地图,你需要添加以下申明: -keep class com.baidu.** { *; } -keep class vi.com.gdi.bgl.android.**{*;} 根据我的经验,一般model最好避免混淆(model无关紧要,不混淆也没多大关系)如: -keep class com.bank.pingan.model.** { *; } 下面在贴上关于Umeng分享统计的避免混淆的申明 -dontwarn android.support.v4.** -dontwarn org.apache.commons.net.** -dontwarn com.tencent.** -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 enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclasseswithmembers class * { public <init>(android.content.Context); } -dontshrink -dontoptimize -dontwarn com.google.android.maps.** -dontwarn android.webkit.WebView -dontwarn com.umeng.** -dontwarn com.tencent.weibo.sdk.** -dontwarn com.facebook.** -keep enum com.facebook.** -keepattributes Exceptions,InnerClasses,Signature -keepattributes *Annotation* -keepattributes SourceFile,LineNumberTable -keep public interface com.facebook.** -keep public interface com.tencent.** -keep public interface com.umeng.socialize.** -keep public interface com.umeng.socialize.sensor.** -keep public interface com.umeng.scrshot.** -keep public class com.umeng.socialize.* {*;} -keep public class javax.** -keep public class android.webkit.** -keep class com.facebook.** -keep class com.umeng.scrshot.** -keep public class com.tencent.** {*;} -keep class com.umeng.socialize.sensor.** -keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;} -keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;} -keep class im.yixin.sdk.api.YXMessage {*;} -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;} -keep public class [your_pkg].R$*{ public static final int *; } 3.以上工作完成,混淆工作就完成了一大半了,最后需要做的就是在project.properties文件中加上你的混淆文件申明了,如下: proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 4. OK, 最后一步,打签名包测试,如果有问题,仔细看下Log也许有得类不能混淆,那么你得加入到proguard-project.txt文件中 -------以上就是混淆代码的全过程了 最后贴上proguard-project.txt的全部代码: [java] view plaincopy在CODE上查看代码片派生到我的代码片 # 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 -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keepattributes *Annotation* -keepattributes Signature -libraryjars libs/apns_1.0.6.jar -libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so -libraryjars libs/armeabi/liblocSDK4.so -libraryjars libs/baidumapapi_v2_3_1.jar -libraryjars libs/core.jar -libraryjars libs/gesture-imageview.jar -libraryjars libs/gson-2.0.jar -libraryjars libs/infogracesound.jar -libraryjars libs/locSDK_4.0.jar -libraryjars libs/ormlite-android-4.48.jar -libraryjars libs/ormlite-core-4.48.jar -libraryjars libs/universal-image-loader-1.9.0.jar -keep class com.baidu.** { *; } -keep class vi.com.gdi.bgl.android.**{*;} -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 * extends android.support.v4.** -keep public class com.android.vending.licensing.ILicensingService -keep class com.google.gson.stream.** { *; } -keep class com.google.gson.examples.android.model.** { *; } -keep class com.uuhelper.Application.** { *; } -keep class net.sourceforge.zbar.** { *; } -keep class com.google.android.gms.** { *; } -keep class com.bank.pingan.model.** { *; } -keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper -keep public class * extends com.j256.ormlite.android.apptools.OpenHelperManager -keep class com.android.vending.licensing.ILicensingService -keep class android.support.v4.** { *; } -keep class org.apache.commons.net.** { *; } -keep class com.tencent.** { *; } -keep class com.umeng.** { *; } -keep class com.umeng.analytics.** { *; } -keep class com.umeng.common.** { *; } -keep class com.umeng.newxp.** { *; } -keep class com.j256.ormlite.** { *; } -keep class com.j256.ormlite.android.** { *; } -keep class com.j256.ormlite.field.** { *; } -keep class com.j256.ormlite.stmt.** { *; } -dontwarn android.support.v4.** -dontwarn org.apache.commons.net.** -dontwarn com.tencent.** -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 enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclasseswithmembers class * { public <init>(android.content.Context); } -dontshrink -dontoptimize -dontwarn com.google.android.maps.** -dontwarn android.webkit.WebView -dontwarn com.umeng.** -dontwarn com.tencent.weibo.sdk.** -dontwarn com.facebook.** -keep enum com.facebook.** -keepattributes Exceptions,InnerClasses,Signature -keepattributes *Annotation* -keepattributes SourceFile,LineNumberTable -keep public interface com.facebook.** -keep public interface com.tencent.** -keep public interface com.umeng.socialize.** -keep public interface com.umeng.socialize.sensor.** -keep public interface com.umeng.scrshot.** -keep public class com.umeng.socialize.* {*;} -keep public class javax.** -keep public class android.webkit.** -keep class com.facebook.** -keep class com.umeng.scrshot.** -keep public class com.tencent.** {*;} -keep class com.umeng.socialize.sensor.** -keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;} -keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;} -keep class im.yixin.sdk.api.YXMessage {*;} -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;} -keep public class [your_pkg].R$*{ public static final int *; } [java] view plaincopy在CODE上查看代码片派生到我的代码片 2015-05-25更新 [java] view plaincopy在CODE上查看代码片派生到我的代码片 1. 依赖工程的jar 申明: [java] view plaincopy在CODE上查看代码片派生到我的代码片 以下是邮件发送的实例 [java] view plaincopy在CODE上查看代码片派生到我的代码片 -libraryjars ../KlowerBase/libs/mail-activation.jar -libraryjars ../KlowerBase/libs/mail-additionnal.jar -libraryjars ../KlowerBase/libs/mail.jar [java] view plaincopy在CODE上查看代码片派生到我的代码片 2. 解决邮件发送时报的以异常 [java] view plaincopy在CODE上查看代码片派生到我的代码片 -keep class javax.mail.**{*;} -keep class com.sun.mail.**{*;} -keep class javax.activation.**{*;} -keep class org.apache.harmony.**{*;} -keep class java.security.**{*;} [java] view plaincopy在CODE上查看代码片派生到我的代码片 #解决:can't find referenced class java.beans.Beans -dontwarn org.apache.commons.collections.BeanMap -dontwarn java.beans.** #解决:can't find referenced class javax.security.sasl.Sasl -dontwarn com.sun.mail.imap.protocol.** [java] view plaincopy在CODE上查看代码片派生到我的代码片 OK,That's all. --Thank you!
相关推荐
Android Studio是一款广泛使用的Android应用程序开发集成环境,而代码混淆是其中的一个重要环节,尤其是在发布应用时,为了提高代码的安全性和减少体积,通常会使用到Proguard工具。AndroidProguard插件则是为...
### Android 代码混淆详解 #### 一、代码混淆概述 代码混淆是软件开发中的一个重要环节,尤其是在移动应用开发领域,如Android应用开发中尤为重要。它通过重命名类名、方法名以及变量名等来使源代码变得难以阅读...
Android 代码混淆写法总结 Android 代码混淆是指在 Android 应用程序中对代码进行混淆处理,以保护代码的安全和 prevents 反编译。混淆可以将代码压缩,混淆文件,预检,优化等多种作用。 使用混淆的方式是通过在 ...
因此,Android混淆技术应运而生,它通过一系列手段来提高代码的复杂性,使得反编译者难以阅读或理解原始代码。 首先,混淆技术涉及到类名和方法名的混淆。Dalvik字节码中包含了丰富的调试信息,如类名、方法名等,...
它能够减小APK大小,优化字节码,混淆代码,使其难以阅读,同时验证处理后的字节码,确保其与Java虚拟机兼容。 二、安装与配置 1. 在Android Studio中,打开项目的`build.gradle`(Module)文件,确保依赖项已经...
总结,资源混淆是Android应用安全保护的重要一环,而这款“资源混淆工具”则为开发者提供了便捷的方式来实现资源混淆。通过理解混淆工具的工作原理和使用方法,开发者可以更好地保护自己的应用,防止未经授权的访问...
总结,Android混淆配置是提升应用安全性和性能的关键步骤,开发者需要根据项目需求精心编写混淆规则,并进行充分测试,以确保混淆后的代码既能保护信息安全,又能保持正常功能。同时,理解和掌握混淆配置的细节,有...
Android 代码混淆三种方法详解 Android 代码混淆是指在将 Java 代码编译为.class 文件或将.apk 文件签名时,对代码进行混淆处理,以保护代码的安全性和知识产权。下面将介绍三种常见的 Android 代码混淆方法。 一...
总结来说,Android混淆编译是一个关键的步骤,它涉及到ProGuard配置、保留规则设定以及最终的构建流程。在`Android Studio 3.1.2`中,开发者可以方便地进行混淆设置,确保应用的安全性和性能。通过对`proguard-rules...
在Android开发中,ProGuard是最广泛使用的Java代码混淆工具之一,它不仅能够混淆代码,还能够对代码进行优化,减少APK的大小,提高运行效率。 #### ProGuard的工作原理 ProGuard通过对类、方法和字段的名称进行...
### Android签名混淆打包详解 #### 一、签名与混淆打包的重要性 在Android应用开发过程中,签名与混淆打包是非常重要的步骤。签名确保了应用的身份唯一性和后续版本更新的一致性,而混淆则增强了应用的安全性,保护...
为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,...
总结来说,Jocky插件是Eclipse开发环境中的一个重要工具,它帮助开发者实现代码混淆,以保护软件源代码,防止恶意分析。通过集成ProGuard,Jocky提供了一种便捷的方式来管理混淆规则,并在Eclipse的界面内直接执行...
Android Library 文件混淆是指对 Android 项目中使用的 Library 文件进行混淆处理,以保护代码的安全和不可逆性。本文将详细介绍 Android Library 文件混淆的步骤和注意事项。 一、准备 jar 文件 在开始混淆之前,...
总结,"android高级混淆字典"是为了提高代码混淆的效果,增加反编译的难度。在实际开发中,我们需要根据项目的特性和需求,合理设置混淆规则,平衡代码安全和可维护性。通过Gradle与ProGuard的配合,可以实现自动化...
在Android应用开发中,对项目进行打包和混淆是非常重要的步骤,可以有效保护代码安全,减少体积,提升性能。本文将详细介绍如何使用ProGuard 5.1进行打包混淆,特别是涉及到Activity、JNI、方法以及第三方库的处理。...
虽然存在其他混淆工具,如DexGuard(专为Android优化的ProGuard版本)和R8(Google推荐的Android代码混淆工具),但ProGuard因其开源、稳定和强大的功能而备受青睐。R8是ProGuard的替代品,速度更快,但配置语法类似...
在Android开发中,混淆技术通常用于减少APK文件大小、保护源代码不被轻易反编译等场景。 #### 二、自定义混淆的重要性 对于Android应用而言,自定义混淆能够根据开发者的需求定制混淆规则,更加灵活地控制哪些类、...
总结,Java jar包的混淆加密是提升代码安全的重要手段,通过ProGuard等混淆工具和加密技术,可以有效降低源代码被逆向工程分析的风险。然而,安全是一个持续的过程,开发者应始终保持警惕,及时更新和优化保护策略。