Eclipse对apk进行混淆加密

版权声明:本文为博主原创文章,转载请注明出处!http://blog.csdn.net/francisbingo https://blog.csdn.net/FrancisBingo/article/details/78033409

在Android开发中在apk上线之前对程序的安全性要有一个重要的把控,不然我们的apk很容易就被人知道源码的实现,对自己对公司都是一种损失。

为了防止这种事情发生,对我们产品的apk进行混淆是非常必要的。下面就介绍一下在Eclipse开发工具中如何对我们的APK进行代码混淆。

一、使用proguard进行加密

首先打开“project.properties”文件,然后在文件中添加一行:proguard.config=./proguard-project.txt。文件中之前就有一行,不过是被注释掉了。这句话的意思是:使用当前目录下的proguard-project.txt作为混淆配置文件。

关于参数:

-include{filename}    从给定的文件中读取配置参数

-basedirectory{directoryname}    指定基础目录为以后相对的档案名称

-injars{class_path}    指定要处理的应用程序jar,war,ear和目录

-outjars{class_path}    指定处理完后要输出的jar,war,ear和目录的名称

-libraryjars{classpath}    指定要处理的应用程序jar,war,ear和目录所需要的程序库文件

-dontskipnonpubliclibraryclasses   指定不去忽略非公共的库类。

-dontskipnonpubliclibraryclassmembers   指定不去忽略包可见的库类的成员。

保留选项 

-keep {Modifier}{class_specification}    保护指定的类文件和类的成员

-keepclassmembers{modifier} {class_specification}    保护指定类的成员,如果此类受到保护他们会保护的更好

-keepclasseswithmembers{class_specification}    保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。

-keepnames{class_specification}    保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)

-keepclassmembernames{class_specification}    保护指定的类的成员的名称(如果他们不会压缩步骤中删除)

-keepclasseswithmembernames{class_specification}    保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)

-printseeds{filename}    列出类和类的成员-keep选项的清单,标准输出到给定的文件

压缩 

-dontshrink   不压缩输入的类文件

-printusage{filename}

-whyareyoukeeping{class_specification}    

优化 

-dontoptimize   不优化输入的类文件

-assumenosideeffects{class_specification}    优化时假设指定的方法,没有任何副作用

-allowaccessmodification   优化时允许访问并修改有修饰符的类和类的成员

混淆 

-dontobfuscate   不混淆输入的类文件

-printmapping{filename}

-applymapping{filename}    重用映射增加混淆

-obfuscationdictionary{filename}    使用给定文件中的关键字作为要混淆方法的名称

-overloadaggressively   混淆时应用侵入式重载

-useuniqueclassmembernames   确定统一的混淆类的成员名称来增加混淆

-flattenpackagehierarchy{package_name}    重新包装所有重命名的包并放在给定的单一包中

-repackageclass{package_name}    重新包装所有重命名的类文件中放在给定的单一包中

-dontusemixedcaseclassnames   混淆时不会产生形形色色的类名

-keepattributes{attribute_name,...}    保护给定的可选属性,例如LineNumberTable,LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, andInnerClasses.

-renamesourcefileattribute{string}    设置源文件中给定的字符串常量


注意的是:

一旦打包出来,就不能用eclipselogcat去看了

这里可以使用adb logcat > d:/log.txt输出日志查看报错信息。

 


猜你喜欢

转载自blog.csdn.net/FrancisBingo/article/details/78033409