云炬Android开发笔记 8代码生成器设计与实践(仿ButterKnife注解框架,编译期生成代码)
閱讀目錄
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注解框架,编译期生成代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设计通用的回调机制
- 下一篇: 云炬Android开发笔记 9主界面-