android程序保护、防止反编译(proguard),签名打包

1 使用proguard防止反编译
    反编译了很多程序,发现基本上没有能读懂的,使用proguard防止反编译基本上已经普遍了,不会这个怎敢发布程序。
 一般人这样告诉你,2.3就带了proguard.cfg文件,2.2没有(但其实也有了),但你可以拷过去,然后在系统属性文件中加入config就行了。
proguard.cfg的文件如下
[html]  view plain copy
  1. -optimizationpasses 5  
  2. -dontusemixedcaseclassnames  
  3. -dontskipnonpubliclibraryclasses  
  4. -dontpreverify  
  5. -verbose  
  6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  
  7.   
  8. -keep public class * extends android.app.Activity  
  9. -keep public class * extends android.app.Application  
  10. -keep public class * extends android.app.Service  
  11. -keep public class * extends android.content.BroadcastReceiver  
  12. -keep public class * extends android.content.ContentProvider  
  13. -keep public class * extends android.app.backup.BackupAgentHelper  
  14. -keep public class * extends android.preference.Preference  
  15. -keep public class com.android.vending.licensing.ILicensingService  
  16.   
  17. -keepclasseswithmembernames class * {  
  18.     native <methods>;  
  19. }  
  20.   
  21. -keepclasseswithmembers class * {  
  22.     public <init>(android.content.Context, android.util.AttributeSet);  
  23. }  
  24.   
  25. -keepclasseswithmembers class * {  
  26.     public <init>(android.content.Context, android.util.AttributeSet, int);  
  27. }  
  28.   
  29. -keepclassmembers class * extends android.app.Activity {  
  30.    public void *(android.view.View);  
  31. }  
  32.   
  33. -keepclassmembers enum * {  
  34.     public static **[] values();  
  35.     public static ** valueOf(java.lang.String);  
  36. }  
  37.   
  38. -keep class * implements android.os.Parcelable {  
  39.   public static final android.os.Parcelable$Creator *;  
  40. }  
default.properties文件内容如下,其实现在是project.properties
[html]  view plain copy
  1. # This file is automatically generated by Android Tools.  
  2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED!  
  3. #  
  4. # This file must be checked in Version Control Systems.  
  5. #  
  6. # To customize properties used by the Ant build system use,  
  7. # "ant.properties", and override values to adapt the script to your  
  8. # project structure.  
  9.   
  10. # Project target.  
  11. target=android-8  
  12. proguard.config=proguard.cfg   
2  需要注意的问题
 (1)全部设定好后,run下,然后看看bin里生成的apk,反编译下。结果还是可以很好的反编译出来。因为代码的混淆只有在签名打包时才有用。签名打包的最方便方法就是在工程右击,然后一步步的来就行啦


 一步步的next即可
(2)“conversion to dalvik format failed with error 1”,这可能是遇到的第一个问题。有人说clean下工程就行了。如果不行的话就要找到,proguard的在android sdk目录\tools\proguard\bin\proguard.bat文件,将
[plain]  view plain copy
  1. set java_exe=  
  2. call "%PROGUARD_HOME%"\..\lib\find_java.bat  
  3.   
  4. call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*  
改为
[html]  view plain copy
  1. set java_exe=  
  2. call "%PROGUARD_HOME%"\..\lib\find_java.bat  
  3.   
  4. call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9  

参见: http://stackoverflow.com/questions/6605971/android-sdk-tools-revision-12-has-problem-with-proguard-error-conversion-to

(3)“proguard returned with error code 1.See console ....找不到文件”或“proguard returned with error code 1.See console ....no such directory or file”。错误原因:sdk文件所在目录,或者工程所在目录中间有空格,proguard不能识别带空格的文件名。

(4)还是“proguard returned with error code 1.See console ....can’t find referenced class”然后是出一堆警告。按提示要加入“-dontskipnonpubliclibraryclasses”,但是文件中已经有了啊。编程都知道,error不行,但warning应该没事啊!直接加入“--ignorewarnings ”选项。这样,基本上就能签名打包了。


再次反编译自己的apk,不但自己都看不懂了,而且,体积还小了很多
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值