问题
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'
}