Android Studio: Warning: 意外的元素 (uri:"", local:"base-extension")。所需元素为<{}codename>,<{}layoutlib>,<...

问题

Android Studio编译出现:

Warning: 意外的元素 (uri:"", local:"base-extension")。所需元素为<{}codename>,<{}layoutlib>,<{}api-level>

问题原因:

Android Studio更新了项目配置文件,旧的配置文件与新的编译器不兼容

解决方案:

1. 替换gradle编译文件

首先把项目视图改成“Project”,

项目视图

然后新建一个空项目,从新项目复制以下文件替换到旧项目:
├ gradlew
├ gradlew.bat
└ gradle
  └ wrapper
    ├ gradle-wrapper.jar
    └gradle-wrapper.properties

2. 更新 build.gradle

该文件内容只是配置了两个Gradle的插件,其中7.3.1为插件的版本
此处Gradle版本7.5.1,插件版本7.3.1,在 Project Structure 窗口下的 Project 页修改,根据你安装的版本调整

plugins {
    id 'com.android.application' version '7.3.1' apply false
    id 'com.android.library' version '7.3.1' apply false
}

3. 更新 settings.gradle

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "此处改成你的项目名"
// 复制此备注之上内容到旧文件即可
include ':app'
include ':其他Module'

4. 更新每个Module下的 build.gradle

需要注意的地方是android下多了namespace,之前的 xxxSdkVersion 现在只写 xxxSdk 就行了

apply plugin: 'com.android.library'

android {
//  变化的地方1
    namespace 'com.example.app'
    compileSdk 33

//  变化的地方2
    defaultConfig {
        applicationId "com.example.app"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
//  以下内容跟旧版本相同
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
//   导入的依赖包都在这里
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.4.1'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。