内容简介:最近在学习ButterKnife框架时,发现了通过Gradle插件生成资源ID的方式,可以解决在Android Library中使用注解Annotation无法使用R.id.XXX的问题。因为Library中的资源ID不再是常量。ButterKnife 10.1.0 该版本Plugin使用的是Kotlin编写的 我改成了groovy版本,源码后面给出。ButterKnife代码
最近在学习ButterKnife框架时,发现了通过Gradle插件生成资源ID的方式,可以解决在Android Library中使用注解Annotation无法使用R.id.XXX的问题。因为Library中的资源ID不再是常量。
前提
ButterKnife 10.1.0 该版本Plugin使用的是Kotlin编写的 我改成了groovy版本,源码后面给出。
分析
ButterKnife代码
通过gradle tasks --all查看 processDebugAndroidTestResources 复制代码
-
我们知道,APT会生成R.java,不过很不幸,我没找到这个文件。不知道什么原因。原来在build/generated/source/r/debug/packageName。哪位知道希望给指点。
-
找到了另外的文件build/intermediates/symbols/debug/R.txt 包含引用的所有Module的merge的中间文件。
文件中每一行是4段内容,每段内容由空格分开分别是:
[数据类型] [值类型(子类名称)] [字段名称] [字段值]
int anim abc_slide_out_bottom 0x7f050008
public static final class anim {
public static final int abc_slide_out_bottom = 0x7f050008;
}
复制代码
- 解析R.txt,生成R2.java ButterKnife定义了一个Task R2Generator 这个类很简单,就是定义Task,然后调用了FinalRClassBuilder的方法 (1) 遍历文件,构造Field字段代码
(2) 将javapoet文件生成 java 文件
Groovy源码
注意,文件的后缀名必须是.groovy,否则生成的plugin中没有class github.com/XingJimmy/B…
Maven 本地库
顺便说下,本地测试Plugin。主要是将plugin发布到本地Maven仓库。
// 定义
apply plugin: 'maven'
//publish to local directory
def versionName = "1.0.0"
group "com.didi.butterknife"
version versionName
uploadArchives{ //当前项目可以发布到本地文件夹中
repositories {
mavenDeployer {
repository(url: uri('../repo')) //定义本地maven仓库的地址
}
}
}
复制代码
buildscript {
repositories {
google()
jcenter()
maven{
url './repo/'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.didi.butterknife:butterknifeplugin:1.0.0'
}
}
复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射
- MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射
- 【mybatis xml】数据层框架应用--Mybatis(三)关系映射之一对一关系映射
- Hibernate 关系映射整理
- SpringMVC——请求映射
- Hibernate 关系映射整理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Writing Windows VxDs and Device Drivers, Second Edition
Karen Hazzah / CMP / 1996-01-12 / USD 54.95
Software developer and author Karen Hazzah expands her original treatise on device drivers in the second edition of "Writing Windows VxDs and Device Drivers." The book and companion disk include the a......一起来看看 《Writing Windows VxDs and Device Drivers, Second Edition》 这本书的介绍吧!