You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Gradle 4.6后,终端执行./gradlew编译Android项目报错

解决Gradle 4.6升级后编译报错的问题

刚踩过类似的坑,Gradle 4.6升级后确实会因为配置兼容性问题触发这个报错,给你几个实用的排查和解决方向:

  • 先清理缓存+简化编译命令
    旧编译缓存很可能和新Gradle版本冲突,先执行清理:

    ./gradlew clean
    

    然后去掉--configure-on-demand参数重试编译——这个参数在Gradle 4.6里对模块配置的逻辑做了调整,容易引发加载不完整的问题:

    ./gradlew assembleDebug --daemon
    
  • 检查注解处理器依赖版本
    这个报错大概率和注解处理器(比如ButterKnife、Dagger、Room这类)版本不兼容有关。打开app/build.gradle,查看所有annotationProcessor(Kotlin项目看kapt)依赖,确保它们的版本适配Gradle 4.6。比如ButterKnife需要升级到9.0.0+,Dagger也要对应到适配的版本。

  • 修复META-INF/services配置文件
    错误提示里的Bad service configuration file说明某个服务配置文件有格式问题:

    • 去项目的src/main/resources/META-INF/services目录,逐个检查文件
    • 确保文件里的类名是完整的全限定名,没有拼写错误、空行或多余空格
    • 如果是第三方库带进来的问题,要么升级该库版本,要么通过Gradle的packagingOptions排除有问题的文件:
      android {
          packagingOptions {
              exclude 'META-INF/services/xxx.xxx.xxx'
          }
      }
      
  • 确认Java版本适配
    Gradle 4.6要求用Java 8及以上版本,检查你的项目JDK配置:

    • 在gradle.properties里添加或修改:
      org.gradle.java.home=/path/to/your/jdk8
      
    • 或者在Android Studio的File > Project Structure > SDK Location里把JDK设为1.8版本
  • 重启Gradle守护进程
    有时候守护进程会缓存旧配置,关闭后重启可能解决问题:

    ./gradlew --stop
    ./gradlew assembleDebug
    

内容的提问来源于stack exchange,提问作者Esteban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:35:30