Android注解使用之注解编译android-apt如何切换到annotationProcessor
2017-09-04 15:27
573 查看
前言:
自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不再维护该工具了,因为Android Studio推出了官方插件,并且可以通过gradle来简单的配置,它就是annotationProcessor,今天来学习一下如何将原来的android-apt切换到annotationProcessor。
什么是APT?
APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,使用Annotation进行额外的处理。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。
使用背景:
随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor的功能来完全代替
android-apt,自此
android-apt作者在官网发表声明证实了后续将不会继续维护
android-apt,并推荐大家使用
Android 官方插件annotationProcessor。
切换步骤:
首先要确保Android Gradle插件版本是2.2以上,目前我们所使用的Android studio版本是2.2.3,所对应的的Android Gradle版本也是2.2.31.)修改Project 的build.gradle配置
android-apt方式dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' }
修改后
annotationProcessor方式
dependencies { classpath 'com.android.tools.build:gradle:2.2.3' }
2.)修改module的build.gradle配置
android-apt方式buildscript { repositories { jcenter() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } apply plugin: 'com.neenbedankt.android-apt' dependencies { compile 'org.greenrobot:eventbus:3.0.0' apt'org.greenrobot:eventbus-annotation-processor:3.0.1'//apt }
修改后
annotationProcessor方式,只保留dependencies 里面的引用并且把apt 换成annotationProcessor就可以了
dependencies { compile 'org.greenrobot:eventbus:3.0.0' annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.0.1' }
3.)对EventBus 3.0 使用索引的兼容
android-apt方式apt { arguments { eventBusIndex "org.greenrobot.eventbusperf.MyEventBusIndex" } }
修改后
annotationProcessor方式
defaultConfig { applicationId "com.whoislcj.testhttp" minSdkVersion 21 targetSdkVersion 24 versionCode 1 versionName "1.0" jackOptions { enabled true } javaCompileOptions { annotationProcessorOptions { arguments = [ eventBusIndex : 'org.greenrobot.eventbusperf.MyEventBusIndex' ] } } }
两者对比
最近Android N的发布,android 迎来了Java 8,要想使用Java 8的话必须使用Jack编译,android-apt只支持javac编译而annotationProcessor既支持javac同时也支持jack编译。
总结:
今天只是简单的学习了从android-apt如何很好的切换到annotationProcessor,接下来将用annotationProcessor实战一下自己实现类似Butterknife注解框架。干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!
c37a
相关文章推荐
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
- Android之使用apt编写编译时注解
- 使用编译时注解annotationProcessor(取代android-apt)开发组件化路由框架
- 如何使用ant编译Android开源voip代码sipdroid
- 我是如何使用Android反编译软件的?
- 如何使用命令行编译运行cocos2d-x的android工程
- 【如何在Android中使用编译好的.so库】
- 转-【CTF环境搭建之】如何使用Android反编译软件
- Android 如何编写基于编译时注解的项目---转载张鸿洋博文
- 如何把rtl8188EUS驱动编译生成ko模块并且下载到rk平台Android4.2.2上使用
- 如何使用ant编译Android开源voip代码sipdroid
- Android如何开发自定义编译时注解
- Android 如何编写基于编译时注解的项目
- Android 如何编写基于编译时注解的项目
- 命令行编译android程序,欢迎探讨命令行如何使用proguard混淆优化代码
- Android 源码编译经验分享, 以及如何使用Android studio 阅读整个源码
- NDK 如何在Android中使用编译好的.so库
- 利用APT实现Android编译时注解