Android - 更改 compileSdkVersion 会导致错误
Android - Changing compileSdkVersion leads to errors
我正在使用 Android Studio 1.2.2 开发 Android 应用程序。在我的 build.gradle 文件中,我从工作开始就将 compileSdkVersion
定义为 21。现在我想将其更改为 19,因为该软件实际上永远不会安装在运行比 Android 4.4
更高版本的 Android 设备上
当我尝试将此值更改为 19 时,项目不再编译。
版本值更改后我有:
- 同步项目
- 清理了项目
- 重建项目(试过)
但是出现如下错误:
在文件 /projectpath/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.0/res/values-v21/values-v21.xml
中标记了 103 个错误,表示 "cannot resolve symbol"。
值-v21.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- From: file:/usr/local/google/buildbot/repo_clients/https___googleplex-android.googlesource.com_a_platform_manifest.git/lmp-mr1-supportlib-release/frameworks/support/v7/appcompat/res/values-v21/styles_base_text.xml -->
<eat-comment/>
<style name="Base.TextAppearance.AppCompat" parent="android:TextAppearance.Material"/>
<style name="Base.TextAppearance.AppCompat.Body1" parent="android:TextAppearance.Material.Body1"/>
<style name="Base.TextAppearance.AppCompat.Body2" parent="android:TextAppearance.Material.Body2"/>
<style name="Base.TextAppearance.AppCompat.Button" parent="android:TextAppearance.Material.Button"/>
....
cannot resovle symbol android:TextAppearance.Material
cannot resovle symbol android:TextAppearance.Material.Body1
cannot resovle symbol android:TextAppearance.Material.Body2
cannot resovle symbol android:TextAppearance.Material.Button
等等...
导致此错误的原因是什么?我该怎么做才能让它再次编译?
当我将 compileSdkVersion
改回 21 时,一切又正常了。
我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '23.0.0 rc3'
defaultConfig {
applicationId 'com.appname.id'
minSdkVersion 17
targetSdkVersion 19
versionCode 1
versionName "0.0.2 Alpha"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}
要使用 appcompat-v7:22.2.0
,您必须针对 API 21
进行编译。这样做没有坏处,即使它永远不会 运行 在设备 运行 宁 21
.
上
您可以尝试一些旧版本的应用程序兼容性,但是您将无法在 "cool new features" 和最新的应用程序兼容性中修复错误。
确保你已经在 sdk 管理器中安装了 API 19
如果这可能对某人有所帮助,经过多次试验和错误后,我发现我在对应于 "library" 的 build.gradle 文件中定位了错误的 SDK 版本(旧版本)。要更改此设置,您可以手动执行或转到模块设置菜单(右键单击您的项目文件夹 -> 打开模块设置。然后在 "library" - 属性中,您可以更改编译 Sdk 和构建工具版本
我正在使用 Android Studio 1.2.2 开发 Android 应用程序。在我的 build.gradle 文件中,我从工作开始就将 compileSdkVersion
定义为 21。现在我想将其更改为 19,因为该软件实际上永远不会安装在运行比 Android 4.4
当我尝试将此值更改为 19 时,项目不再编译。
版本值更改后我有:
- 同步项目
- 清理了项目
- 重建项目(试过)
但是出现如下错误:
在文件 /projectpath/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.0/res/values-v21/values-v21.xml
中标记了 103 个错误,表示 "cannot resolve symbol"。
值-v21.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- From: file:/usr/local/google/buildbot/repo_clients/https___googleplex-android.googlesource.com_a_platform_manifest.git/lmp-mr1-supportlib-release/frameworks/support/v7/appcompat/res/values-v21/styles_base_text.xml -->
<eat-comment/>
<style name="Base.TextAppearance.AppCompat" parent="android:TextAppearance.Material"/>
<style name="Base.TextAppearance.AppCompat.Body1" parent="android:TextAppearance.Material.Body1"/>
<style name="Base.TextAppearance.AppCompat.Body2" parent="android:TextAppearance.Material.Body2"/>
<style name="Base.TextAppearance.AppCompat.Button" parent="android:TextAppearance.Material.Button"/>
....
cannot resovle symbol android:TextAppearance.Material
cannot resovle symbol android:TextAppearance.Material.Body1
cannot resovle symbol android:TextAppearance.Material.Body2
cannot resovle symbol android:TextAppearance.Material.Button
等等...
导致此错误的原因是什么?我该怎么做才能让它再次编译?
当我将 compileSdkVersion
改回 21 时,一切又正常了。
我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '23.0.0 rc3'
defaultConfig {
applicationId 'com.appname.id'
minSdkVersion 17
targetSdkVersion 19
versionCode 1
versionName "0.0.2 Alpha"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}
要使用 appcompat-v7:22.2.0
,您必须针对 API 21
进行编译。这样做没有坏处,即使它永远不会 运行 在设备 运行 宁 21
.
您可以尝试一些旧版本的应用程序兼容性,但是您将无法在 "cool new features" 和最新的应用程序兼容性中修复错误。
确保你已经在 sdk 管理器中安装了 API 19
如果这可能对某人有所帮助,经过多次试验和错误后,我发现我在对应于 "library" 的 build.gradle 文件中定位了错误的 SDK 版本(旧版本)。要更改此设置,您可以手动执行或转到模块设置菜单(右键单击您的项目文件夹 -> 打开模块设置。然后在 "library" - 属性中,您可以更改编译 Sdk 和构建工具版本