【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

1.编写自己的元注解和annotationProcessor

1.1 微信登录说明

【说明】微信登录比较坑,在官网文档中说明,必须在app下建立wxapi的目录,然后建立两个activity(微信登录和微信支付)

本节的内容就是要绕过这个限制。使用到的黄油刀的模仿;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

1.2 butterKnifer的元注解

【说明】模仿butterknife完成微信的入口的解释器,注解和代码的提取;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

1.3 模仿的butterKnifer的元注解

【主要讲解的内容】基于butterknife的元注解的原理,annimotionprocessor生成我们所需要的代码;进而绕过微信的限制,最大限度的提高代码的封装方式;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【注意】此包是java类型的包,如果是library、application,否则无法查找到包AbstractProcessor;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【参考源码】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【引入依赖】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【将程序中已经注解过的类的类型的传递到集合】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【引入google的类】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【增加注解】生成动态信息

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【扫描方法】扫描每个类,每个注解的东西;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

2. 通过注解生成指定模板的代码

2.1 通过注解生成指定模板的代码

【扫描每个注解标注的东西】首先生成EntryAnnimitor标注的注解,生成微信的EntryAcitivity;

解析的代码和扫描的代码分开;代码解析器只能通过循环代码环境当中的内容,一层层的解析,这些处理是在编译期间完成的,不会影响性能;

【visitor的生成】相当于访问器,相当与属性、注解的类、变量、方法中传入的值然后取出来,

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【找出注解的类的源信息】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【找出注解的类的源信息并且生成代码】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

2.2 使用注解类的扫描查找功能

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

2.3 增加支付和注册的代码的查找

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【复制生成pay/register的visitor文件】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【添加pay和register的功能】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

2.4 效果演示

【模板类的生成】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【调用】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【添加注解】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【编译工程】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【生成的代码】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

3. 通过代码生成器,生成微信登录代码,绕过微信包名限制

3.1 添加依赖

【网址】https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【说明】需要企业提前注册好appId和key;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【在应用程序中加入全局的acitivity 上下文】在应用程序的onCreate方法中初始化该模块;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

3.2 应用程序的逻辑

【登录逻辑】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【说明】在点击登录之后会出现微信的登录页面,是微信回调的页面;现在打破了微信的定制(需要在目录下建立一个回调activity);

【登录页面回调基类】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【登录页面-子类继承父类】com.flj.latte.wechat.BaseWXEntryActivity

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【回到专门生成代码的模板类】-对于登录返回界面的处理,市面大多数的应用都是这么处理的;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【自动生成文件,对入口文件添加配置项】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【透明主题的定义】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【增加回调】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

3.3 使用

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【测试效果演示】【需要在真机演示】生成必要的签名文件;

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【注意】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

 3.4 调用的流程总结

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】

好文要顶
关注我
收藏该文
【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】
【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】
0
0

« 上一篇: 【0106】【项目实战】-【Android通用框架设计与完整电商APP开发】-【5】【登录、注册功能开发(ORM框架-GreenDao)】

» 下一篇: 【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【7】【主界面-通用底部导航设计与一键式封装】

posted @
2018-03-30 16:03
OzTaking
阅读(385)
评论(0)
编辑
收藏
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章资源,如无特殊说明或标注,均为本站网友和创作者贡献分享。如若本站内容侵犯了原著者的合法权益,可联系网站客服QQ2743319061删除。

云炬星球 安卓教程 【0107】【项目实战】-【Android通用框架设计与完整电商APP开发】-【6】【代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)】 https://src.yunjunet.cn/103916.html

常见问题
  • 放心亲,我们不会为了几十块钱的东西坏了名声!
查看详情
  • 方法一:点击“立即下载.”按钮,付款后在下载弹窗的虚线框的隐藏信息里获取 方法二:在正文底部使用VIP查看隐藏的解压密码 方法三:联系【云炬网络】公众号客服获取
查看详情
  • 付款后会出现“立即下载”按钮(点击即可下载),如果下载失败也可以联系客服发订单截图补发。
查看详情
  • 登录购买会多端同步购买记录,永久可以查看反复下载;非登录购买仅将购买记录保存到本地浏览器中,浏览器cookie清除后无法再次下载。先右上角点登录,然后点击微信图标可以快速授权注册登录^_^
查看详情
  • 可以试看。点击”查看演示“或“试看预览”按钮可以试读从资料目录中节选的部分内容,也可以自己指定想试看的内容。
查看详情
  • 原因一:本站所有资源已开启有效性检测(服务器24h全自动监测),当监测到下载链接无法访问时会提示“该资源已失效,请勿购买”,遇到这种情况可以联系客服修复失效的下载链接,或直接联系客服在淘宝下单购买即可。(检测原理:购买前服务器程序会预访问下载链接,响应值为200说明资源有效允许购买,响应值为404或502等报错说明资源失效禁止购买)。原因二:上传者未启用“下载”选项。
查看详情
官方客服团队

为您解决烦忧 - 24小时在线 专业服务