• android注解处理技术APT


      APT(Annotation Processing Tool)是java的注解处理技术,它对源代码文件进行检测找出其中的Annotation,根据注解和注解处理器和相应的apt自动生成代码。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定)。

    1、什么是APT?

      android-apt和annotationProcessor功能是一样的,都是apt的实现,前者比较早,后者是google官方开发的内置在gradle里的apt

    APT的处理要素
      注解处理器(AbstractProcess)+ 代码处理(javaPoet)+ 处理器注册(AutoService)+ apt

    使用APT来处理annotation的流程
      1.  定义注解(如@automain)
      2.  定义注解处理器,自定义需要生成代码
      3.  使用处理器
      4.  APT自动完成生成新的java文件。

    2、annotationProcessor和android-apt
    annotationProcessor是APT工具中的一种,是google开发的内置框架,不需要引入,可以直接在build.gradle文件中使用,如下

    1 dependencies {
    2   annotationProcessor project(':xx')
    3   annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    4 }

    android-apt是由一位开发者自己开发的apt框架,随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt ,自此android-apt 作者在官网发表声明最新的Android Gradle插件现在已经支持annotationProcessor,并警告和或阻止说不在更新android-apt ,并推荐大家使用 Android 官方插件annotationProcessor。

    android-apt的使用

    添加android-apt到Project下的build.gradle中
    //配置在Project下的build.gradle中

     1 buildscript {
     2     repositories {
     3         mavenCentral()
     4     }
     5 
     6     dependencies {
     7         //替换成最新的 gradle版本
     8         classpath 'com.android.tools.build:gradle:1.3.0'
     9         //替换成最新android-apt版本
    10         classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    11     }
    12 
    13 }                

    在Module中build.gradle的配置

    通常在使用的时候,使用apt声明注解用到的库文件。项目依赖可能分为多个部分。例如Dagger有两个组件Dagger-compiler和dagger。dagger-commpiler仅用于编译时,运行时必需使用dagger。

    //配置到Module下的build.gradle中

    1 apply plugin: 'com.android.application'
    2 apply plugin: 'com.neenbedankt.android-apt'
    3 
    4 dependencies {
    5     apt 'com.squareup.dagger:dagger-compiler:1.1.0'
    6     compile 'com.squareup.dagger:dagger:1.1.0'
    7 }

    基本使用就是上面这两点,想用annotationProcessor替代android-apt。删除和替换相应部分即可。

  • 相关阅读:
    STL
    Python
    Swift学习笔记
    Swift学习笔记
    Cocos2d-x -- 如何让背景从上到下滚动
    Cocos2d-x -- 图片菜单按钮
    How to change in the Cocos2d-x project from landscape to portrait both in iOS and Android
    系统集成项目管理工程师和信息系统管理工程师的区别是什么?
    公积金取出来后悔了 公积金取出来好还是不取好?
    青岛公积金贷款额度最高多少?怎么算?
  • 原文地址:https://www.cnblogs.com/linghu-java/p/10118182.html
Copyright © 2020-2023  润新知