在Android Studio中建议将Android Gradle插件从7.0.0升级到7.0.2后,Upgrade Assistant通知无法在构建文件中找到AGP版本,因此我无法进行升级。
我该怎么办?
谢谢
build. gradle(项目)中的代码
buildscript {
repositories {
google()
}
dependencies {
classpath Libs.androidGradlePlugin
classpath Libs.Kotlin.gradlePlugin
classpath Libs.Hilt.gradlePlugin
}
}
plugins {
id 'com.diffplug.spotless' version '5.12.4'
}
subprojects {
repositories {
google()
mavenCentral()
if (!Libs.AndroidX.Compose.snapshot.isEmpty()) {
maven { url Urls.composeSnapshotRepo }
}
if (Libs.Accompanist.version.endsWith('SNAPSHOT')) {
maven { url Urls.mavenCentralSnapshotRepo }
}
}
apply plugin: 'com.diffplug.spotless'
spotless {
kotlin {
target '**/*.kt'
targetExclude("$buildDir/**/*.kt")
targetExclude('bin/**/*.kt')
ktlint(Versions.ktLint)
licenseHeaderFile rootProject.file('spotless/copyright.kt')
}
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
jvmTarget = "1.8"
// Use experimental APIs
freeCompilerArgs += '-Xopt-in=kotlin.RequiresOptIn'
}
}
// androidx.test and hilt are forcing JUnit, 4.12. This forces them to use 4.13
configurations.configureEach {
resolutionStrategy {
force Libs.JUnit.junit
}
}
}
build. gradle中的代码(模块)
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
}
// Reads the Google maps key that is used in the AndroidManifest
Properties properties = new Properties()
if (rootProject.file("local.properties").exists()) {
properties.load(rootProject.file("local.properties").newDataInputStream())
}
android {
compileSdkVersion 31
defaultConfig {
applicationId "androidx.compose.samples.crane"
minSdkVersion 21
targetSdkVersion 31
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.compose.samples.crane.CustomTestRunner"
manifestPlaceholders = [ googleMapsKey : properties.getProperty("google.maps.key", "") ]
}
signingConfigs {
// We use a bundled debug keystore, to allow debug builds from CI to be upgradable
// Cert fingerprint =
debug {
storeFile rootProject.file('debug.keystore')
storePassword 'xxxxxxxxxx'
keyAlias 'xxxxxxxxxxx'
keyPassword 'xxxxxxxxxx'
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
compose true
// Disable unused AGP features
buildConfig false
aidl false
renderScript false
resValues false
shaders false
}
composeOptions {
kotlinCompilerExtensionVersion Libs.AndroidX.Compose.version
}
packagingOptions {
// Multiple dependency bring these files in. Exclude them to enable
// our test APK to build (has no effect on our AARs)
excludes += "/META-INF/AL2.0"
excludes += "/META-INF/LGPL2.1"
}
}
dependencies {
implementation Libs.Kotlin.stdlib
implementation Libs.Kotlin.Coroutines.android
implementation Libs.GoogleMaps.maps
implementation Libs.GoogleMaps.mapsKtx
constraints {
// Volley is a transitive dependency of maps
implementation(Libs.Volley.volley) {
because("Only volley 1.2.0 or newer are available on maven.google.com")
}
}
implementation Libs.Accompanist.insets
implementation Libs.AndroidX.Activity.activityCompose
implementation Libs.AndroidX.appcompat
implementation Libs.AndroidX.Compose.runtime
implementation Libs.AndroidX.Compose.foundation
implementation Libs.AndroidX.Compose.material
implementation Libs.AndroidX.Compose.layout
implementation Libs.AndroidX.Compose.animation
implementation Libs.AndroidX.Compose.tooling
implementation Libs.AndroidX.Lifecycle.viewModelCompose
implementation Libs.AndroidX.Lifecycle.viewModelKtx
implementation Libs.Coil.compose
implementation Libs.Hilt.android
kapt Libs.Hilt.compiler
androidTestImplementation Libs.JUnit.junit
androidTestImplementation Libs.AndroidX.Test.runner
androidTestImplementation Libs.AndroidX.Test.espressoCore
androidTestImplementation Libs.AndroidX.Test.rules
androidTestImplementation Libs.AndroidX.Test.Ext.junit
androidTestImplementation Libs.Kotlin.Coroutines.test
androidTestImplementation Libs.AndroidX.Compose.uiTest
androidTestImplementation Libs.Hilt.android
androidTestImplementation Libs.Hilt.testing
kaptAndroidTest Libs.Hilt.compiler
}
构建. gradle. kts时的代码
repositories {
jcenter()
}
plugins {
`kotlin-dsl`
}
4条答案
按热度按时间qnakjoqk1#
在我的案例中,以下步骤解决了这个问题:
请参阅gradle发行说明中的升级到版本7.0.2的说明。
vom3gejh2#
我不知道它是否对您的问题至关重要,但修改它
到
因为
jcenter()
已经过时了。4dc9hkyq3#
在我的例子中,我使用自定义属性来维护插件的版本,所以升级助手抛出了这个错误(
Can not find AGP version in build files
)。我不得不手动更新
versionManagement.android
的值我看到您有(ext)属性来保存插件(classpath)
在这种情况下,工具无法更新AGP版本。您应该手动更新
Libs.androidGradlePlugin
jei2mxaa4#
当我在Android Studio中尝试使用工具〉AGP升级助手时,我遇到了同样的错误。
对于那些不知道的人,Android Gradle Plugin是项目级build. gradle中指定的依赖项
com.android.tools.build:gradle:
(需要说明的是,不是我的模块级build. gradle)。在我的案例中,问题在于我的项目级build. gradle文件使用变量而不是硬编码版本来指定Android Gradle插件的版本。
我的项目在www.example.com中包含以下变量,并在我的build. gradle文件中引用了该变量:gradle.properties and referenced it in my build.gradle file:
它在项目级build. gradle文件中引用了它,如下所示:
为了解决这个问题,我更改了我的项目级build. gradle文件:
对此:
更改后,工具〉AGP升级助手不再抱怨"在构建文件中找不到AGP版本"。此外,我能够使用AGP升级助手从www.example.com:gradle:7.2.2升级到com.android.tools.build:gradle:7.3.1。com.android.tools.build:gradle:7.2.2 to com.android.tools.build:gradle:7.3.1.
我的答案与@suryavel-tr中的答案类似,但在我的例子中,版本号由一个gradle变量指定。