用到afinal注解的项目代码混淆后某些控件view点击事件无效问题

最近一个项目上线,要求代码混淆,可混淆后某些控件的点击事件无效,后来发现是afinal注解的问题。查了半天资料,后来又问了afinal的相关人员,他们给出的解决方案是排除混淆被注解的类,这样的话意味着基本所有的activity和fragment都不能混淆,这不是我想要的。

后来反编译代码比较排除被注解的类和不排除被注解类的区别,比较发现,那些不能点击的控件的定义代码被优化掉了,被优化掉的原因就是因为用注解后,在代码中该控件的实例没有其他地方用到,所以程序就认为该代码没有被用到,就被注视掉了。

知道问题那解决办法就有了,在混淆配置中加入-dontshrink,使代码不被压缩优化,加上它后发现混淆后的代码并未比原来增加多少,如果介意的话那只能排除被注解的类或者不再用afinal的注解。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 20:30:58

用到afinal注解的项目代码混淆后某些控件view点击事件无效问题的相关文章

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

Cocos2d-x3.0游戏实例之《别救我》第六篇——从代码中获取UI控件

这篇的内容很简单,获取UI控件,然后使用它. 还记得我们在UI编辑器中给三个按钮分别命名了吧? 现在要用上了. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址: http://www.benmutou.com/blog/archives/918 文章来源:笨木头与游戏开发 根据名字查找控件 首先给TollgateScene再include一些头文件,不然等会编译又报错了: #include "editor-support/cocostudio/CCSGUIReader.h&quo

原创控件代码共享--日期选择控件

思路:实现日期年月日的选择 1.可以设定年的起止年份 2.排除不正确日期选择的可能 3.使用javascript实现控制 4.使用Text属性方便获取设置日期值 ================================= 代码如下: using System; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.IO; using

js代码赋值触发select控件的onchange事件

嗯,现在在一个小公司实习,直接接触代码收获不小.  现在有个需求是4级联动的select过滤,需要js代码赋值并触发onchange来调用ajax方法,于是问题是怎样触发,找了些资料并且自己尝试了一下,验证无误. 代码在chrome.IE8.ff浏览器测试均通过,记在这里以备查阅~ <html> <head> </head> <body> <select id="sel" name="mysel" onchang

React-Knockout无缝粘合,JavaScript项目MVVM框架下的控件化

这次讲的是把React和Knockout结合使用的示例,两个框架各有所长,也有不同的特点和特色,这次把他们结合起来,似乎有些胆大妄为,然而有时候就是容易遇到一些奇怪的需求.使得我们不得不去出一些奇招.然而这样真的很奇怪吗?实际上并不是这样子,使用react创建控件,再使用knockout构建MVVM框架,开发流程可以变得有条不絮,易于扩展维护,同时可实现代码重用,减少开发的工作量. 1.要构建React-Knockout MVVM框架我们首先需要下载React和knockout的JS库 Reac

在代码中动态创建控件无法保存状态的问题

在网上找了点资料,算是明白了,这是我觉得有帮助的文章: 原文:http://blog.csdn.net/keleloveni/archive/2007/03/15/1530300.aspx 引文: 今天偶然看到有篇文章谈到了相关的问题,终于又解决了一个自己不是很明白的东西. 页面生命周期中的第一个阶段是实例化,在这个阶段中,自动生成的类会根据页面的 HTML 部分中定义的静态控件构建控件层次结构.构造控件层次结构时,声明性语法中指定的值会赋给添加的每个控件的属性.实例化之后是初始化阶段,在这个阶

在VB中动态执行VBS代码,可操控窗体控件

通过执行一段VBS代码来操控窗体内的控件 也可以使用AddObject方法添加自己的类,那么在动态VBS代码中也一样可以使用 在增加程序扩展性或是有脚本化需求的时候,这个方法还是不错的. Option Explicit Dim vbs As Object Private Sub Command1_Click() vbs.ExecuteStatement "showtime" End Sub Private Sub Form_Load() Set vbs = CreateObject(&

初级篇第四期:纯代码来写UI控件

学习建议:自己动手,丰衣足食 学习周期:1周 学习目的:熟练使用Obejct-C中最常用的简单UI控件 学习答疑:欢迎来技术群里提问并做分享 学习工具:Xcode开发环境 学习内容:我们会在下面告诉大家手动创建常见的UI控件 经过前几期的学习,相信小伙伴们应该对UI控件有所熟悉了哦,没错,那我们接下来就用纯代码来写一些常用的UI控件好了 首先,任何一个UI控件都是有它固定的属性的,第一就是frame,一定要记住,没有frame就没有它的存在,所以一个UI控件的灵魂就在于它的frame,因为它是显

android代码编写布局和控件

//创建线性linearlayout布局对象  LinearLayout ll = new LinearLayout(this);    //设置linearlayout布局方向  ll.setOrientation(LinearLayout.VERTICAL);    //得到布局或控件高度  int height = LinearLayout.LayoutParams.MATCH_PARENT;    //得到布局或控件宽度  int width = LinearLayout.LayoutP