王学岗移动架构35-IOC框架设计之Butterknife

我们平时写代码,都是java文件,然后转化为class文件,在java虚拟机中运行,我们上一篇文章写的 IOC,都是运行时候绑定的。今天,我们用一个APT的东东,我们在java转化为class文件的时候,我们使用APT,可以做很多事情。在编译阶段使用注解是无需反射的,性能会提升。ButterKnife的用法我就不介绍了,很简单,我们现在手动写一套Butterknife框架。
我们的模块分为以下几个,APP的Module,annotations的Moudle,专门用来提供注解。annotation compile 处理其它模块中的注解,就是我们的APT

annotation_compile的build.gradle

apply plugin: 'java-library'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    //注册我们的注解处理器
    //如果我们希望当前的模块是注解处理器,需要加这两句代码
//    implementation 'com.google.auto.service:auto-service:1.0-rc3'
    // As-3.4.1 + gradle5.1.1-all + auto-service:1.0-rc4
    annotationProcessor'com.google.auto.service:auto-service:1.0-rc4'
    compileOnly'com.google.auto.service:auto-service:1.0-rc4'

    implementation project(path: ':annotations')
}

sourceCompatibility = "7"
targetCompatibility = "7"

在app的build.gradle里面修改

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation project(path: ':annotations')
    //添加这句代码,这里不能写成implementation
    annotationProcessor project(path: ':annotation_compiler')
}

待续

发布了208 篇原创文章 · 获赞 15 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qczg_wxg/article/details/102726106