我一直使用 Eclipse 对 Android 进行编程,并决定开始迁移到 Android Studio。我决定使用与 Eclipse 相同的 SDK,然后:
开始了一个新项目
设置最低 SDK 4.0(API 级别 14)
选择空白活动选项
使用活动名称和布局名称的默认名称
点击完成
几秒钟后,Gradle 完成了构建,并在文件 Teste4\app\build\intermediates/exploded-aar\com.android.support\appcompat-v7\23.0.0\res\values 中向我抛出了两个错误-v23\values-v23.xml:
错误:(2) 检索项目的父项时出错:找不到与给定名称“android:TextAppearance.Material.Widget.Button.Inverse”匹配的资源。错误:(2) 检索项目的父项时出错:找不到与给定名称“android:Widget.Material.Button.Colored”匹配的资源。
在 File -> Project Structure -> Modules: app (left column) -> Properties 选项卡下,我设置了以下版本:
《编译SDK版本》:Android 5.1(API Level 22)
“构建工具版本”:23.0.2
我应该怎么做才能解决这个问题?
我已经尝试过 Stack Overflow 问题 appcompat-v7:21.0.0': No resource found that matches the given name: attr 'android:actionModeShareDrawable' 中的建议,但没有奏效。
您的编译 SDK 版本必须与支持库的主要版本匹配。
由于您使用的是版本 23 的支持库,因此您需要针对版本 23 的 Android SDK 进行编译。
或者,您可以通过切换到最新的支持库 v22 继续编译 Android SDK 版本 22。
发生这种情况是因为更新后 Android Studio 默认使用 API 版本 23。
以下对我有用:
按 Ctrl + Shift + Alt + S 进入项目结构页面。转到属性选项卡并在构建工具区域将 23.0.0 更改为 22.0.1(或等同于您之前使用的)并重新构建您的项目。
如果这不起作用,请转到 gradle:app 然后
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
如上所示编辑 v7:23.0.0 到 v7:22.2.1 并同步 gradle。这肯定会奏效。
v23/values-23.xml
文件中有这些错误。我已经更改了项目结构页面中的值,重建应用程序。但仍然面临这个问题:(
当你更新你的 Android Studio 时,它默认使用 API 版本 23,这是它发生的主要原因。所以,
首先,在 build.gradle(Module:app) 中检查你的 AppCompat 版本,即
https://i.stack.imgur.com/zdA9P.jpg
如果更改为 23 后出现错误,则只需下载
Compile Sdk Version to API 23, and Build Tools Version to 23.0.0
来自 SDK 管理器。如果已经下载然后:
1. Go to SDK Manager and
2. Under Project Structure, change *Compile SDK Version* to API 23, and *Build Tools Version* to 23.0.0
单击 SDK 管理器按钮并打开对话框。
https://i.stack.imgur.com/bAoOZ.jpg
点击 SDK Platform 并检查是否下载了 Android 6.0。
如果没有,请先下载。完成下载后,单击应用。
https://i.stack.imgur.com/VDKen.jpg
现在您需要将更改从设置应用到您的项目。然后按 Ctrl + Alt + Shift + S 打开设置
单击列表中的应用程序。单击属性将您的编译 SDK 版本更改为 API 23 将您的构建工具版本更改为 23.0.0
https://i.stack.imgur.com/tl5P7.jpg
不要忘记重建您的项目。
那么你的错误就会消失。
如果您尝试将目标更改为以前的 GooglePlayServices 或 AppCompatv7 版本但它不起作用,请检查您是否有任何项目库依赖项,该项目将针对这些库中的任何一个的最新版本。 Google Maps Utils Library 项目发生在我身上:
代替:
compile 'com.google.android.gms:play-services:+'
至
compile 'com.google.android.gms:play-services:8.3.0'
然后您可以继续完全定位 API 22
如果仍然无法编译,有时将 compileSdkVersion API 设置为 23 并将 targetSdkVersion 设置为 22 很有用。
我同意前面的回答。您编译的 SDK 版本必须与支持库匹配。这就是我所做的。
您可以转到 SDK Manager 并在 SDK Platform 下,安装 API 级别为 23 的 Android 5.X。在 Project Structure 下,将 compile SDK Version 更改为 API 23,并将 Build Tools Version 更改为 23.0.0
然后它应该毫无问题地构建。
您需要将 compileSdkVersion 设置为 23。
由于 API 23 Android 删除了已弃用的 Apache Http 包,因此如果您将它们用于服务器请求,您需要将 useLibrary 'org.apache.http.legacy'
添加到 build.gradle
,如以下链接所述:
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
...
//only if you use Apache packages
useLibrary 'org.apache.http.legacy'
}
之所以会出现此问题,是因为现在编译 SDK 版本必须与 Android 支持库的主要版本匹配。
在我的情况下,我有 Android Support Library
版本 23,所以我必须针对 Android SDK version 23
进行编译,并且我必须在我的 build.gradle
文件中更改它:
https://i.stack.imgur.com/GYWZB.png
你们中的一些人需要安装 SDK,Android 6.0 (API 23)
https://i.stack.imgur.com/7jH6Y.png
并且不要忘记将项目与 gradle 文件同步
android {
compileSdkVersion 23
buildToolsVersion '23.0.1'
defaultConfig {
applicationId ""
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.android.support:recyclerview-v7:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.1'
}
我找到了解决方案,当我更新 sdk 时问题开始了,之后我使用了不同的 buildToolsVersion ('22.0.1') 并且我使用了不同的支持库,比如 compile 'com.android.support:appcompat-v7:23.0.0',在下图中向您展示
https://i.stack.imgur.com/8yyvY.png
这引发了“android.widget.Material ...”的问题然后我使用相同版本的支持库,如编译'com.android.support:appcompat-v7:22.0.1'及其完成。 (在下面的屏幕截图中显示)
https://i.stack.imgur.com/sSw1Y.png
https://i.stack.imgur.com/opa28.jpg
并在需要时同步您的项目。
https://i.stack.imgur.com/NRM5B.png
它可能会有所帮助。
正如Tanis.7x所指出的,支持库版本(23)与targetSdkVersion(22)不匹配
您可以通过执行以下操作来解决此问题:
在您的应用模块的 build.grade
文件中,更改以下代码行
compile 'com.android.support:appcompat-v7:23.0.0'
至
compile 'com.android.support:appcompat-v7:22.+'
这将使用与 SdkVersion 22 兼容的最新版本的 appcompat 版本。
您编译的 SDK 版本必须与支持库的主要版本匹配。这是您的问题的解决方案。您可以在 build.gradle
文件中的 Gradle 脚本中轻松检查它。 Fx:如果您的 compileSdkVersion
是 23,您的编译库必须从 23 开始。
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
minSdkVersion 15
targetSdkVersion 23
versionCode 340
versionName "3.4.0"
}
dependencies {
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:recyclerview-v7:23.0.1'
}
https://i.stack.imgur.com/2XGQZ.jpg
就我而言,它是更高版本的 Google-play-services。我将它们设置为 7.0.0(不是 8.x),一切正常。
我想从 API 23 降级到 22 并收到此错误。我必须更改项目中的所有 build.gradle
文件才能编译。
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.yourapp.app"
minSdkVersion 14
targetSdkVersion 22
}
...
dependencies {
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:design:22.2.1'
compile 'com.google.android.gms:play-services-gcm:10.0.1'
}
这对我有帮助:Adding specific android platform
应该做的事情如下......在我的例子中是 cordova
但同样适用于 ionic
、phonegap
和其他类似的框架:
列出为您的项目安装的所有平台:cordova 平台列表。你会看到这样的东西:
https://i.stack.imgur.com/hH6o1.jpg
移除android平台:cordova平台移除android。然后添加具体的android平台:cordova platform add android@5.0.0。
祝你好运! :)
我遇到了同样的问题。我通过将每个子模块的 gradle.build 更新为最新的编译器版本来解决我的问题。
另一个解决方案:导航到
\sdk\extras\android\m2repository\com\android\support\appcompat-v7\23.x.x
使用 7-zip 或 winrar 打开 .aar
文件,在 res 文件夹中删除 values-23
文件夹并保存更改。
在模块上:应用程序(Gradle)
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.namepack.nameappxxxxx"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
项目:名称AppXXXX(Gradle)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
并将您的 AppCompatActivity 活动编辑为例如活动:
package com.namepack.nameappxxxxx;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
public class NameClass extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
}
一切都很好,但你们都没有解释在哪里下载 SDK 构建工具
https://i.stack.imgur.com/XBrvU.png
https://i.stack.imgur.com/irmPA.png
确保所有这些都是最新的。
升级安卓工作室。
我在使用 Android Studio 1.3.1 时遇到了这个问题,其他答案都没有对我有用,但是在更新到 1.5.1 之后就没有问题了。
如果您使用的是 phonegap(跨平台)并遇到上述相同的问题,只需使用以下命令删除 android 平台。
phonegap 平台删除 android
并再次添加。
phonegap 平台添加 android
然后问题为我解决了。
如果即使在下载了最新的 SDK 和 Android Studio 后仍然出现错误,我是这样做的:
下载最新的 SDK 打开文件-项目结构(Ctrl + Alt + Shift + S) 在模块中,选择应用 在属性选项卡中: 将编译 SDK 版本更改为 API 23 Android 6.0 marshmallow(最新)
我希望它可以帮助某人,这样他就不会像我这几天那样受苦。
正如其他人已经提到的,您的 compile sdk version
必须与您的 support library's
主要版本相匹配。但是,如果您有的话,这也与 subprojects
相关。
如果您这样做,您可以使用以下脚本设置您的 subprojects
编译 sdk 版本:
subprojects { subproject ->
afterEvaluate{
if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
}
}
}
将此脚本添加到您的根 build.gradle
文件中。
不定期副业成功案例分享
build.gradle
中手动更改它,也可以通过打开项目属性并转到“依赖项”选项卡来使用 GUI。