cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。(解决方案的最全整理)

  • Post author:
  • Post category:其他


记录一下,新电脑安装新版的Android Studio(小蜜蜂版本)导入那些gradle还是5.1.1(

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

)的项目以后,各种不适应,编译出现了一些问题。使用旧版本Android Studio(3.0.1)打开这个项目还是好好的。

报错具体内容如下:

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。


解决步骤如下:

跟随 Arctic Fox 更新的其中一个重点就是 AGP 7.0 的调整 … 使用 Android Gradle plugin

7.0 构建时需要 JDK 11 才能运行 Gradle … 并且只要你更新到 Android Studio Arctic Fox ,它是直接捆绑了 JDK 11 并将 Gradle 配置为默认使用它,所以大多数情况下,如果你本地配置正常,是可以直接使用 AGP 7.0

的升级。 … 在 Project Structure 的 SDK Location 栏目,可以看到 JDK 的配置位置已经被移动到

Gradle Settings …

1、首先修改项目的jdk版本,新版的Android Studio(小蜜蜂版本)创建项目的jdk默认是jdk11(如下图一),如果是老的项目,可能不是jdk11,而是jdk1.8,需改成jdk11(File->Setting->搜索

Gradle

,选择JDK的路径->点击OK,见下图二)。

2、修改项目下的(注意是project下的,不是module下的)build.gradle文件的配置项,把

classpath 'com.android.tools.build:gradle:3.0.1'

改成

classpath 'com.android.tools.build:gradle:4.2.0'

(我的已修改,见下图一)

3、修改项目的gradle配置项,把

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

改成

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

(我的已修改,见下图一)

4、编译通过之后,看着像是没什么问题了。可是run到手机的时候,又出现了一些问题,问题是老版本的依赖(module下的dependencies标签下的依赖)与项目下的(注意是project下的,不是module下的)build.gradle的classpath ‘com.android.tools.build:gradle:4.2.0’不兼容

引起的,比如高德地图这几个依赖。

解决方法:

把高德地图的老版本依赖

//高德地图
    //3D地图so及jar
    compile 'com.amap.api:3dmap:latest.integration'
    //定位功能
    compile 'com.amap.api:location:latest.integration'
    //搜索功能
    compile 'com.amap.api:search:latest.integration'

换成新的高德地图的依赖,

//高德地图
    //3D地图so及jar
    implementation 'com.amap.api:3dmap:5.0.0'
    //定位功能
    implementation 'com.amap.api:location:3.3.0'
    //搜索功能
    implementation 'com.amap.api:search:5.0.0'

如果别的依赖也不兼容的话,根据提示把别的不兼容的依赖也替换成新的就没问题了。



版权声明:本文为NakajimaFN原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。