使用Gradle插件生成资源ID映射文件

栏目: Java · 发布时间: 6年前

内容简介:最近在学习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插件生成资源ID映射文件
通过gradle tasks --all查看
processDebugAndroidTestResources
复制代码
  1. 我们知道,APT会生成R.java,不过很不幸,我没找到这个文件。不知道什么原因。原来在build/generated/source/r/debug/packageName。哪位知道希望给指点。

  2. 找到了另外的文件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;
}
复制代码
  1. 解析R.txt,生成R2.java ButterKnife定义了一个Task R2Generator 这个类很简单,就是定义Task,然后调用了FinalRClassBuilder的方法 (1) 遍历文件,构造Field字段代码
    使用Gradle插件生成资源ID映射文件
    使用Gradle插件生成资源ID映射文件
    (2) 将javapoet文件生成 java 文件
    使用Gradle插件生成资源ID映射文件

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'
    }
}
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Writing Windows VxDs and Device Drivers, Second Edition

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》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换