美文网首页
android使用AutoService无法生成META-INF

android使用AutoService无法生成META-INF

作者: 逗比寨主 | 来源:发表于2020-05-11 17:54 被阅读0次

    背景

    在使用google的注解处理器auto-service时,在编译时无法自动生成 META-INF/services目录,不生成 javax.annotation.processing.Processor 文件,导致无法生成注解类。
    分析
    在编译时,可以看到build文件会有一句警告

    Gradle may disable incremental compilation as the following annotation processors are not incremental...

    从警告信息上来看,是Gradle出问题了,当前Gradle版本不支持当前的annotation方式。

    解决方案

    这是因Gradle 5.0之后,会忽略compile classpath中的 annotationProcessor,因此有以下两种方案解决问题。

    方案一:

    1.修改项目的build.gradle的classpath修改为3.1.1

    buildscript {
        
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.1'
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    1. gradle-wrapper.properties文件的gradle版本,且替换gradle-wrapper.jar
    #Sun Apr 22 13:09:31 CST 2018
    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
    

    3.clean项目重新build

    方案二:

    在项目中添加annotationProcessor 'com.google.auto.service:auto-service:1.0-rc4'

    apply plugin: 'java-library'
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    
        annotationProcessor 'com.google.auto.service:auto-service:1.0-rc6'
        implementation 'com.google.auto.service:auto-service:1.0-rc6'
        //快速生成.java文件的库
        implementation 'com.squareup:javapoet:1.10.0'
        implementation project(':apt-annotation')
    }
    

    对项目影响最小的为方案二

    相关文章

      网友评论

          本文标题:android使用AutoService无法生成META-INF

          本文链接:https://www.haomeiwen.com/subject/vtqpnhtx.html