大家应该已经看过ioc的知识
在ioc基础中中
视图事件都是通过注解实现的
问题1
如果有某个属性只声明了一下,其他代码没有引用由于混淆时会进行属性优化,将没用的属性去掉,这时需要处理

处理方法:在混淆配置文件中保留属性

问题2
混合代码时方法名都会变成a,b,c等,这样ioc事件可能就找不到方法
如下面的注解

InjectView(id=R.id.listView,itemClick="toEditStudent",itemLongClick="toDeleteStudent")

处理方法
在写代码时要有规范所有方法 所有事件方法都是以 on或to开头
在配置 混淆配置文件 对以on 和to的方法名保留

事件总线OnEvent 注解的方法也需要这样处理 ,不然方法可能被注释掉

当然现在还有更好的选择 使用第三方工具进行加密
爱加密的加密功能还是很牛的
http://www.ijiami.cn/treg?regCode=1003705
爱加密最后生成的classe.dex只有2k
我和他们客服聊了下
他说
原本的DEX文件被隐藏了的
现在这里的只是它们做的一个壳
这个基础版做了两部分处理,一是对apk内部每一个文件进行唯一值验证,只要apk内部的任何一个文件被修改 此文件的唯一值必定变化。运行时检测到变化程序将卡死。另一个就是DEX加壳隐藏

有点像帮他们做广告的嫌疑啊 当然你也可以先混淆后在让爱加密的加密

附上我的混淆配置文件

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontoptimize
-ignorewarnings
#工程中用到的第三方包
-libraryjars libs/android-support-v13.jar
#工程中用到的第三方包
-libraryjars libs/baidu_moni.jar #不混淆第三方包
-keep class android.support.v13.**
#忽略第三方包导致的异常
-dontwarn android.support.v4.**
#忽略第三方包导致的异常
-dontwarn android.support.v13.**
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.support.v4.app.Fragment -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 * implements android.os.Parcelable
-keep public class * extends OrmLiteSqliteOpenHelper
-keep public class net.duohuo.dhroid.net.cache.Cache
-keep public class net.duohuo.dhroid.net.cache.CacheManager
-keep public class * extends net.duohuo.dhroid.util.Perference -keep public class com.android.vending.licensing.ILicensingService -keep class net.duohuo.dhroid.net.cache.CacheManager{ *; }
-keep class net.duohuo.dhroid.net.cache.Cache{ *; }
-keep class com.j256.ormlite.dao.*{ *; }
-keep class com.j256.ormlite.db.*{ *; }
-keep class com.j256.ormlite.table.*{ *; }
-keep class com.j256.ormlite.stmt.*{ *; }
-keep class com.j256.ormlite.support.*{ *; }
-keep class com.j256.ormlite.misc.*{ *; }
-keep class com.j256.ormlite.field.*{ *; }
-keep class com.j256.ormlite.logger.*{ *; }
-keep class com.j256.ormlite.android.*{ *; }
-keep class com.j256.ormlite.android.apptools.*{ *; } -keep class com.google.gson.*{ *; }
-keep class com.google.gson.stream.*{ *; }
-keep class com.google.gson.reflect.*{ *; }
-keep class com.google.gson.internal.*{ *; }
-keep class com.google.gson.annotations.*{ *; }
-keep class com.google.gson.internal.bind.*{ *; }
-keep class net.duohuo.dhroid.util.*{ *; }
-keep class net.duohuo.ivory.util.*{ *; }
-keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper{ *; } -keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
} #保存itemclick的回调
-keepclassmembers class *{
public void on*(android.widget.AdapterView, android.view.View,int,long);
public void to*(android.widget.AdapterView, android.view.View,int,long);
public void on*( android.view.View);
public void to*( android.view.View);
public void on*();
public void to*(); }
#保存所有的属性
-keepclassmembers class * {
<fields>; } -keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

最新文章

  1. java中判断字符串是否为只包含数字
  2. [Think In Java]基础拾遗4 - 并发
  3. IIS 7.5 + asp.net MVC4 设置路由处理URL请求
  4. paip.哈米架构CAO.txt
  5. 每天一个小算法(Shell Sort2)
  6. Spring整合CXF,发布RSETful 风格WebService(转)
  7. poj1286Necklace of Beads(ploya定理)
  8. vim字符编码设置
  9. 基于visual Studio2013解决C语言竞赛题之0413同构数
  10. 那么 Appium 到底是怎么工作的呢?
  11. 【BZOJ1801】【AHOI2009】中国象棋(动态规划)
  12. eclipse+gradle
  13. CentOS7 修改MAC地址
  14. h5活动页开发总结记录
  15. android 解决子线程进行UI操作
  16. .net 生成html文件后压缩成zip文件并下载
  17. SpringMVC整合kaptcha(验证码功能)
  18. git查看各个branch之间的关系图
  19. 面向对象之ajax
  20. Mac PHPStorm快捷键总结

热门文章

  1. 【项目管理】Project使用
  2. 1. BeeGo 介绍与项目的创建,启动
  3. css 中的相对定位和绝对定位
  4. Tensorflow同时加载使用多个模型
  5. oracle创建HR示例数据库脚本hr_main.sql分享
  6. python 使用模板模式和工厂模式的混合设计开发各种邮件客户端发送邮件
  7. 字符串中包含汉字和\u,显示出汉字来
  8. linq to xml 增删查改
  9. Java虚拟机(三):Java 类的加载机制
  10. flexbox父盒子flex-wrap属性