在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} 设置源文件中给定的字符串常量
注意的是:
一旦打包出来,就不能用eclipse的logcat去看了
这里可以使用adb logcat > d:/log.txt输出日志查看报错信息。