阅读目录
1.编写自己的元注解和annotationProcessor

1.1 微信登录说明
1.2 butterKnifer的元注解
1.3 模仿的butterKnifer的元注解
2. 通过注解生成指定模板的代码
2.1 通过注解生成指定模板的代码
2.2 使用注解类的扫描查找功能

2.3 增加支付和注册的代码的查找
2.4 效果演示
3. 通过代码生成器,生成微信登录代码,绕过微信包名限制

3.1 添加依赖
3.2 应用程序的逻辑
3.3 使用
 3.4 调用的流程总结

回到顶部

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

回到顶部

1.1 微信登录说明

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

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

回到顶部

1.2 butterKnifer的元注解

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

回到顶部

1.3 模仿的butterKnifer的元注解

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

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

【参考源码】

【引入依赖】

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

【引入google的类】

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

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

回到顶部

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

回到顶部

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

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

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

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

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

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

回到顶部

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

回到顶部

回到顶部

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

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

【添加pay和register的功能】

回到顶部

2.4 效果演示

【模板类的生成】

【调用】

【添加注解】

【编译工程】

【生成的代码】

回到顶部

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

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

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

回到顶部

3.2 应用程序的逻辑

【登录逻辑】

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

【登录页面回调基类】

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

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

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

【透明主题的定义】

【增加回调】

回到顶部

3.3 使用

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

【注意】

回到顶部

3.4 调用的流程总结

云炬Android开发笔记 8代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)相关推荐

  1. 云炬Android开发笔记 7登陆注册功能开发

    阅读目录 1.注册UI及验证逻辑实现 1.1 布局 1.2 注册信息的验证和逻辑 2.登录UI及验证逻辑实现 2.1 布局 2.2 登录的逻辑框架 3.服务器数据简单介绍 3.1 服务器的数据 3.2 ...

  2. 云炬Android开发笔记 3-2字体图标库集成与封装

    1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...

  3. 云炬Android开发笔记 3-1项目架构初始化

    一.项目架构初始化 1.我们的应用只有一个activity,它里面是多个fragment进行切换的,这样的好处是应用会非常顺滑,并且一个activity也可以进行很多全局的处理. 在类前加上final ...

  4. 云炬Android开发笔记 12基于WebView的混合App框架设计(包含浏览器与原生请求Cookie的处理)

    阅读目录 1.WebView高可扩展性封装 1.1 发现模块的框架搭建 1.2 webView的基类 1.3 对webview基类的实现 1.4 setInitializer的方法的实现 1.5 we ...

  5. 云炬Android开发笔记 4单Activity界面架构设计与验证

    1.4-2本应用没有使用多个activity进行界面的展示,而是通过一个activity管理多个fragment来进行处理. fragment里面有很多坑,推荐使用开源库fragmentation. ...

  6. 云炬Android开发笔记 9主界面-通用底部导航设计与一键式封装

    阅读目录 1.底部导航BottomBar设计与实现 1.1 说明 1.2 基于每个tab的子frament的父类的实现 1.3  建立bean类包含tab的信息(icon+文字) 2.打造适合电商主界 ...

  7. 云炬Android开发笔记 1项目架构设计与模块分解

    一.项目架构设计与模块分解 ② ③ ④ ⑤ ⑥ 2. ② 注: 1.WeakHashMap的键值对在内存需要的时候可以被回收 2.static final定义的变量名需要大写,并且用下划线进行分隔.如 ...

  8. 云炬Android开发笔记 6启动图功能开发与封装

    阅读目录 1.启动图功能开发与封装(倒计时效果) 2. 持久化 3.倒计时工具库封装 4.第一个启动页面的倒计时 5.启动图功能开发与封装(轮播效果) 5.1 轮播图片的添加 5.2 指示器的添加 6 ...

  9. 云炬Android开发笔记 17商品详情功能开发

    阅读目录 1.商品详情ui框架设计 1.1 自定义圆形控件 1.2 底部栏的布局 1.3 整体布局 2.商品详情UI-MD风格伸缩渐变效果实现 2.1 ui的绑定 2.2 服务器中商品详情页的数据的取 ...

最新文章

  1. 趣学python3(35)-Newton迭代法解一元方程
  2. python一条竖线_python matplotlib 画一条水平直线遇到的问题
  3. metrics_FlexyPool如何支持Dropwizard Metrics包重命名
  4. cannot convert 'this' pointer from 'const class A' to 'class A '
  5. OpenGL ES 2 o 初探
  6. 青书学堂计算机科学与技术,青书学堂考试 答案2019佳木斯信息计算机.doc
  7. Android 使用传感器
  8. js中的innerText、innerHTML、属性值、value与jQuery中的text()、html()、属性值、val()总结...
  9. 技术说明的注释有点用,其他的完全是捣乱
  10. 最新版ins安装包下载
  11. 咸鱼ZTMR实例—PS2手柄控制板载LED
  12. html文件如何显示大纲视图,如何使用大纲视图生成章节目录
  13. The7th Zhejiang Provincial Collegiate Programming Contest-Problem A:A - Who is Older?
  14. C语言 代码 九九乘法表
  15. MATLAB给多组条形图添加误差棒
  16. 均值,期望,方差,标准差,协方差
  17. 有没有好用的文字转语音软件?
  18. The Complete Guide To Rooting Any Android Phone
  19. Matlab pdepd函数偏微分方程的求解问题
  20. The request was rejected because the URL contained a potentially malicious String “//“ 报错

热门文章

  1. 【零基础】Python的入门学习
  2. Python selenium环境搭建
  3. Apache Beam发布第一个稳定版本
  4. 对list中的元素按照元素的属性进行排序
  5. nyoj 420(快速幂)
  6. linux bash脚本编程知识点
  7. CodeForces 416B
  8. CodeForce 534C Polycarpus' Dice (数学推理)
  9. NYOJ 300 hdu 2276 Kiki Little Kiki 2 (矩阵快速幂)
  10. 特征工程中的IV和WOE详解