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 添加依赖
【说明】需要企业提前注册好appId和key;
【在应用程序中加入全局的acitivity 上下文】在应用程序的onCreate方法中初始化该模块;
3.2 应用程序的逻辑
【登录逻辑】
【说明】在点击登录之后会出现微信的登录页面,是微信回调的页面;现在打破了微信的定制(需要在目录下建立一个回调activity);
【登录页面回调基类】
【登录页面-子类继承父类】com.flj.latte.wechat.BaseWXEntryActivity
【回到专门生成代码的模板类】-对于登录返回界面的处理,市面大多数的应用都是这么处理的;
【自动生成文件,对入口文件添加配置项】
【透明主题的定义】
【增加回调】
3.3 使用
【测试效果演示】【需要在真机演示】生成必要的签名文件;
【注意】