android studio3.4.1 gradle-5.1.1 配置 apt ,实现黄油刀(ButterKnife)效果遇到的问题及最新方法:
apt简介:
APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,使用Annotation进行额外的处理。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。
过时做法(报错):
project gradle中:
mavenCentral()classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
app gradle中:
apply plugin: 'com.neenbedankt.android-apt'
报错为:
ERROR: android-apt plugin is incompatible with the Android Gradle plugin. Please use 'annotationProcessor' configuration instead.
Affected Modules: app
最新可用方法(通过):
1、删除上面添加的全部代码;
2、分别新建android library --- inject 和java library ---- inject_annotation,inject_compiler三个module;
3、将inject和inject_compiler导入app中,并且在app.gradle中将依赖关系implementation改成annotationProcessor:
;
4、在inject_compiler的gradle中依赖 implementation 'com.google.auto.service:auto-service:1.0-rc2':
5、将inject_annotation分别导入inject_compiler和inject中,其中inject中的改为api(app要引用inject_annotation的BindView)implementation;
6、运行后报中文编码错误 错误: 编码GBK的不可映射字符 :
解决:inject_annotation中的gradle中加入如下代码 设置代码格式:
tasks.withType(JavaCompile) {options.encoding = "UTF-8"
}