新建了个项目,过一段时间之后再去编译,提示错误:
- FAILURE: Build failed with an exception.
-
- * What went wrong:
- A problem occurred configuring root project 'MyApp'.
- > compileSdkVersion is not specified. Please add it to build.gradle
-
- * Try:
- > Run with --info or --debug option to get more log output.
- > Run with --scan to get full insights.
很诧异,啥都没改,为什么突然就报错了呢?
于是一一排查,终于找到问题了,我项目APP中,依赖如下:
- dependencies {
-
- ...
- implementation "androidx.core:core-ktx:+"
- ...
- }
重点就是这个+,代表一直使用最新的版本,而最新版本有可能对compileSdk,tools版本产生各种要求,从而导致最终的编译不过。
而这个依赖库时创建项目时自动创建的,如果没有使用到删掉即可,如果使用,建议使用固定版本。
另外,项目的build.gradle文件中要声明好版本如下:
- plugins {
- id 'com.android.application' version '7.2.1' apply false
- id 'com.android.library' version '7.2.1' apply false
- }
类似的错误还有如下等等,都是由于这个问题导致的
- 1. Dependency 'androidx.core:core:1.9.0-beta01' requires libraries and applications that
- depend on it to compile against version 33 or later of the
- Android APIs.
-
- :app is currently compiled against android-32.
-
- Also, the maximum recommended compile SDK version for Android Gradle
- plugin 7.2.1 is 32.
-
- Recommended action: Update this project's version of the Android Gradle
- plugin to one that supports 33, then update this project to use
- compileSdkVerion of at least 33.
-
- Note that updating a library or application's compileSdkVersion (which
- allows newer APIs to be used) can be done separately from updating
- targetSdkVersion (which opts the app in to new runtime behavior) and
- minSdkVersion (which determines which devices the app can be installed
- on).
- 2. Dependency 'androidx.core:core-ktx:1.9.0-beta01' requires libraries and applications that
- depend on it to compile against version 33 or later of the
- Android APIs.
-
- :app is currently compiled against android-32.
-
- Also, the maximum recommended compile SDK version for Android Gradle
- plugin 7.2.1 is 32.
-
- Recommended action: Update this project's version of the Android Gradle
- plugin to one that supports 33, then update this project to use
- compileSdkVerion of at least 33.
-
- Note that updating a library or application's compileSdkVersion (which
- allows newer APIs to be used) can be done separately from updating
- targetSdkVersion (which opts the app in to new runtime behavior) and
- minSdkVersion (which determines which devices the app can be installed
- on).