本文主要是介绍gradle之apt与annotationProcessor与kapt关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么是APT?
随着一些如ButterKnife,dagger等的开源注解框架的流行,APT的概念也越来越被熟知。
APT(Annotation Processing Tool 的简称),可以在代码编译期解析注解,并且生成新的 Java 文件,减少手动的代码输入。现在有很多主流库都用上了 APT,比如 Dagger2, ButterKnife, EventBus3 等
DataBinding
Dagger2
ButterKnife
EventBus3
DBFlow
AndroidAnnotation
annotationProcessor和android-apt的功能是一样的,它们是替代关系。
APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。
Android Gradle插件2.2版本发布后,Android 官方提供了annotationProcessor来代替android-apt,annotationProcessor同时支持 javac 和 jack 编译方式,而android-apt只支持 javac 方式。
同时android-apt作者宣布不在维护,当然目前android-apt仍然可以正常运行,如果你没有想支持 jack 编译方式的话,可以继续使用 android-apt。
Android Gradle 插件版本2.2以下:
buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.0.0' //插件2.2以下classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //apt需要}
}
apply plugin: 'com.neenbedankt.android-apt' //apt需要dependencies {compile 'com.google.dagger:dagger:2.0'apt 'com.google.dagger:dagger-compiler:2.0' //apt
}
Android Gradle 插件版本升级到 2.2 及以上:
buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.2.2' //插件2.2以上}
}
dependencies {compile 'com.google.dagger:dagger:2.0'annotationProcessor 'com.google.dagger:dagger-compiler:2.0' //annotationProcessor
}
kotlin中
不使用apt和annotationProcessor 而使用kapt
kapt: Annotation Processing for Kotlin ,即用于kotlin的apt
//java中implementation 'com.google.dagger:dagger:2.17'annotationProcessor 'com.google.dagger:dagger-compiler:2.17'//kotlin中implementation 'com.google.dagger:dagger:2.17'kapt 'com.google.dagger:dagger-compiler:2.17'
apt {arguments {androidManifestFile variant.outputs[0]?.processResources?.manifestFileresourcePackageName "com.xxx.xxx"}
}//将apt替换为annotationProcessor:javaCompileOptions {annotationProcessorOptions {arguments = ['resourcePackageName': "com.xxx.xxx","androidManifestFile": "$projectDir/src/main/AndroidManifest.xml".toString()]}
}
这篇关于gradle之apt与annotationProcessor与kapt关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!