proguard-project.txt和project.properties混淆代码_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > proguard-project.txt和project.properties混淆代码

proguard-project.txt和project.properties混淆代码

 2015/3/31 13:16:38  ovwvwvo  程序员俱乐部  我要评论(0)
  • 摘要:【转】利用androidproguard混淆代码防止反编译,优化代码网上虽然有很多相关博客,不过貌似都不是最新版的。。于是百度+谷歌+github上的开源demo,终于成功的配置了androidproguard。最新版的androidsdk的默认配置已经可以满足我们的大多数要求了,我们只需要按照sdk的提示就可以配置大部分的必须配置,然后再加上一些基本的自定义配置就行了。第一步,取消project.properties里面关于proguard的注释。这一步可以开启proguard
  • 标签:project 代码

class="ico ico_type_Repost"> 【转】利用android proguard混淆代码 防止反编译,优化代码

网上虽然有很多相关博客,不过貌似都不是最新版的。。于是百度+谷歌+github上的开源demo,终于成功的配置了android proguard。

最新版的android sdk的默认配置已经可以满足我们的大多数要求了,我们只需要按照sdk的提示就可以配置大部分的必须配置,然后再加上一些基本的

自定义配置就行了。

  • 第一步,取消project.properties里面关于proguard的注释。这一步可以开启proguard。根据网上的博客,最好加上sdk的路径。
sdk.dir=D:/Java/IDE/adt-bundle-windows-x86_64-20130219/sdk
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

  这样一来默认的配置文件也会被包括进来。

  • 第二步,保存被AndroidManifest.xml调用或者webview的类。这是因为proguard会移除没有被调用的代码。
-keepclassmembers
class fqcn.of.javascript.interface.for.webview
 {
   public *;
}
-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
class android.**
 {*;}
-keep
class com.jeremyfeinstein.slidingmenu.lib.**
 {*;}
-keep
class com.actionbarsherlock.**
 {*;}
-keep
class com.lidroid.xutils.**
 {*;}
  • 第四步,其实这一步可以代替上面所有的keep语句,彻底将误删的概率降到最低。那就是保留所有具有公有访问权限的类和其公共成员。
-keepclasseswithmembers
class *{
    public *;
}
  • 第五步,在github上的开源proguarddemo上学来的,删除Log代码
-assumenosideeffects
class android.util.Log
 {
    public static ***
 e(...);
    public static ***
 w(...);
    public static ***
 wtf(...);
    public static ***
 d(...);
    public static ***
 v(...);
}

配置好混淆,最后打包项目:

接着我反编译导出的APK,如下:

 

发现在生成的jar文件中,所有的类名,变量名都变成了a,b,c等无法正确理解的名称,达到了预期的效果。

 

[以上内容没有亲测,内容均来源网络]

参考地址:

http://blog.csdn.net/binyao02123202/article/details/18940715

http://blog.csdn.net/pomme_qixiaohu/article/details/8551918

http://www.2cto.com/kf/201207/144771.html

上一篇: 关于领域驱动设计与GIT的优势的个人理解 下一篇: 没有下一篇了!
发表评论
用户名: 匿名