APK混淆

1 修改project.properties文件 即可实现对项目进行全局混码
将proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
前的#去掉即可

2 proguard-project.txt 混淆的申明 有一些代码不能被混淆

  1. -optimizationpasses 5 # 指定代码的压缩级别
  2. -dontusemixedcaseclassnames # 是否使用大小写混合
  3. -dontskipnonpubliclibraryclasses # 是否混淆第三方jar
  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 * { # 保持 native 方法不被混淆
  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 * { # 保持枚举 enum 类不被混淆
  34. public static **[] values();
  35. public static ** valueOf(java.lang.String);
  36. }
  37.  
  38. -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆
  39. public static final android.os.Parcelable$Creator *;
  40. }
  41.  
  42. -keepclassmembers class * {
  43. public <init>(org.json.JSONObject);
  44. }
  45.  
  46. -keep class android.support.v4.**{*;}
  47. -keepattributes *Annotation*
  48.  
  49. -keep class MyClass; # 保持自己定义的类不被混淆
  1. -optimizationpasses 5
  2. -dontusemixedcaseclassnames
  3. -dontskipnonpubliclibraryclasses
  4. -dontpreverify
  5. -verbose
  6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
  7.  
  8. -keepattributes *Annotation*
  9. -keepattributes Signature
  10.  
  11. -libraryjars libs/apns_1.0.6.jar
  12. -libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so
  13. -libraryjars libs/armeabi/liblocSDK4.so
  14. -libraryjars libs/baidumapapi_v2_3_1.jar
  15. -libraryjars libs/core.jar
  16. -libraryjars libs/gesture-imageview.jar
  17. -libraryjars libs/gson-2.0.jar
  18. -libraryjars libs/infogracesound.jar
  19. -libraryjars libs/locSDK_4.0.jar
  20. -libraryjars libs/ormlite-android-4.48.jar
  21. -libraryjars libs/ormlite-core-4.48.jar
  22. -libraryjars libs/universal-image-loader-1.9.0.jar
  23.  
  24. -keep class com.baidu.** { *; }
  25. -keep class vi.com.gdi.bgl.android.**{*;}
  26.  
  27. -keep public class * extends android.app.Fragment
  28. -keep public class * extends android.app.Activity
  29. -keep public class * extends android.app.Application
  30. -keep public class * extends android.app.Service
  31. -keep public class * extends android.content.BroadcastReceiver
  32. -keep public class * extends android.content.ContentProvider
  33. -keep public class * extends android.app.backup.BackupAgentHelper
  34. -keep public class * extends android.preference.Preference
  35. -keep public class * extends android.support.v4.**
  36. -keep public class com.android.vending.licensing.ILicensingService
  37.  
  38. -keep class com.google.gson.stream.** { *; }
  39. -keep class com.google.gson.examples.android.model.** { *; }
  40. -keep class com.uuhelper.Application.** { *; }
  41. -keep class net.sourceforge.zbar.** { *; }
  42. -keep class com.google.android.gms.** { *; }
  43.  
  44. -keep class com.bank.pingan.model.** { *; }
  45.  
  46. -keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper
  47. -keep public class * extends com.j256.ormlite.android.apptools.OpenHelperManager
  48.  
  49. -keep class com.android.vending.licensing.ILicensingService
  50. -keep class android.support.v4.** { *; }
  51. -keep class org.apache.commons.net.** { *; }
  52. -keep class com.tencent.** { *; }
  53.  
  54. -keep class com.umeng.** { *; }
  55. -keep class com.umeng.analytics.** { *; }
  56. -keep class com.umeng.common.** { *; }
  57. -keep class com.umeng.newxp.** { *; }
  58.  
  59. -keep class com.j256.ormlite.** { *; }
  60. -keep class com.j256.ormlite.android.** { *; }
  61. -keep class com.j256.ormlite.field.** { *; }
  62. -keep class com.j256.ormlite.stmt.** { *; }
  63.  
  64. -dontwarn android.support.v4.**
  65. -dontwarn org.apache.commons.net.**
  66. -dontwarn com.tencent.**
  67.  
  68. -keepclasseswithmembernames class * {
  69. native <methods>;
  70. }
  71.  
  72. -keepclasseswithmembernames class * {
  73. public <init>(android.content.Context, android.util.AttributeSet);
  74. }
  75.  
  76. -keepclasseswithmembernames class * {
  77. public <init>(android.content.Context, android.util.AttributeSet, int);
  78. }
  79.  
  80. -keepclassmembers enum * {
  81. public static **[] values();
  82. public static ** valueOf(java.lang.String);
  83. }
  84.  
  85. -keep class * implements android.os.Parcelable {
  86. public static final android.os.Parcelable$Creator *;
  87. }
  88.  
  89. -keepclasseswithmembers class * {
  90. public <init>(android.content.Context);
  91. }
  92.  
  93. -dontshrink
  94. -dontoptimize
  95. -dontwarn com.google.android.maps.**
  96. -dontwarn android.webkit.WebView
  97. -dontwarn com.umeng.**
  98. -dontwarn com.tencent.weibo.sdk.**
  99. -dontwarn com.facebook.**
  100.  
  101. -keep enum com.facebook.**
  102. -keepattributes Exceptions,InnerClasses,Signature
  103. -keepattributes *Annotation*
  104. -keepattributes SourceFile,LineNumberTable
  105.  
  106. -keep public interface com.facebook.**
  107. -keep public interface com.tencent.**
  108. -keep public interface com.umeng.socialize.**
  109. -keep public interface com.umeng.socialize.sensor.**
  110. -keep public interface com.umeng.scrshot.**
  111.  
  112. -keep public class com.umeng.socialize.* {*;}
  113. -keep public class javax.**
  114. -keep public class android.webkit.**
  115.  
  116. -keep class com.facebook.**
  117. -keep class com.umeng.scrshot.**
  118. -keep public class com.tencent.** {*;}
  119. -keep class com.umeng.socialize.sensor.**
  120.  
  121. -keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}
  122.  
  123. -keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}
  124.  
  125. -keep class im.yixin.sdk.api.YXMessage {*;}
  126. -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
  127.  
  128. -keep public class [your_pkg].R$*{
  129. public static final int *;
  130. }

使用Gson库混淆后报错的解决办法

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.meibeike.meiphoto.common.protocol.model.Cloud123EntityListEntity

proguard-project.txt配置文件中添加两项即可

-keepattributes Signature

-keepattributes *Annotation*

-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.examples.android.model.** { *; }

Android APK混淆的更多相关文章

  1. Android: apk反编译 及 AS代码混淆防反编译

    一.工具下载: 1.apktool(资源文件获取,如提取出图片文件和布局文件) 反编译apk:apktool d file.apk –o path 回编译apk:apktool b path –o f ...

  2. android黑科技系列——Apk混淆成中文语言代码

    一.前言 最近想爆破一个app,没有加壳,简单的使用Jadx打开查看源码,结果把我逗乐了,代码中既然都是中文,而且是一些比较奇葩的中文字句,如图所示: 瞬间感觉懵逼了,这app真会玩,我们知道因为Ja ...

  3. Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

    前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} ...

  4. android apk 防止反编译技术第四篇-对抗JD-GUI

    又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...

  5. Android 代码混淆 防止反编译

    为了防止代码被反编译,因此需要加入混淆.混淆也可以通过第三方进行apk混淆,也可以用android中的proguard进行混淆. 混淆步骤: 1.配置混淆文件,名字可以随意,在这里使用proguard ...

  6. 利用android proguard混淆代码

    利用android proguard混淆代码 2014-02-05 17:50 1207人阅读 评论(1) 收藏 举报 网上虽然有很多相关博客,不过貌似都不是最新版的..于是百度+谷歌+github上 ...

  7. 反编译Android APK及防止APK程序被反编译

    怎么逆向工程对Android Apk 进行反编译 google Android开发是开源的,开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式 ...

  8. Android studio混淆

    看了一篇关于Android studio混淆的文章http://blog.csdn.net/qq_23547831/article/details/51581491,感觉有必要总结一个简单的混淆版本设 ...

  9. 爱加密Android APk 原理解析

    转载请标明出处:http://blog.csdn.net/u011546655/article/details/45921025 爱加密Android APK加壳原理解析 一.什么是加壳? 加壳是在二 ...

随机推荐

  1. [团队项目]SCRUM项目6.0 7.0 (新)

    6.0----------------------------------------------------- sprint演示 1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉 ...

  2. windows下TCP服务器和客户端的实现

      服务器   1.初始化 WSAStartup(..)   2.创建Socket s = Socket ( .. )   3.绑定端口 ret = bind ( ... )   4.监听 ret = ...

  3. Mysql 升级到 5.6 后插入语句时间字段报错:Incorrect datetime value: '' for column 'createtime'

    今天部署服务器项目运行,当遇见有时间数据对象的插入和更新操作的时候,就报错,如下: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data trunca ...

  4. SQL Server中常用的SQL语句

    1.概述 名词 笛卡尔积.主键.外键 数据完整性 实体完整性:主属性不能为空值,例如选课表中学号和课程号不能为空 参照完整性:表中的外键取值为空或参照表中的主键 用户定义完整性:取值范围或非空限制,例 ...

  5. Intent官方教程(2)Intent的两种类型

    Intent Types There are two types of intents: Explicit intents specify the component to start by name ...

  6. 【Java】集合(List、Set)遍历、判断、删除元素时的小陷阱

    开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素. 不知不觉中,有些陷阱,不知你有没有犯. 一.漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下 ...

  7. 深入javascript作用域链到闭包

    我之前用过闭包,用过this,虽然很多时候知道是这么一回事,但是确实理解上还不够深入.再一次看javascript高级程序设计这本书时,发现一起很多疑难问题竟然都懂了,所以总结一下一些理解,难免有错, ...

  8. mysql计划任务

    这两天一直遇见mysql计划任务的案例,今天我就给大家分享一个真是的实例: 1.创建计划任务的语法: create event 任务名称 on schedule  at 时间周期 starts '年- ...

  9. MySQL基础(三)——约束

    MySQL基础(三)--约束 约束是在表上强制执行的数据校验规则,主要用于维护表中数据的完整性以及当数据之间有以来关系时,保护相关的数据不会被删除. 根据约束对列的限制,可以划分为:单列约束(只约束一 ...

  10. java中为什么byte的取值范围是-128到+127

    概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数.正数补码为其本身:负数补码为其绝对值各位取反加1:例如:+21,其二进制表示形式是000101 ...