Lỗi khi truy xuất cấp độ gốc cho mục: Không tìm thấy tài nguyên nào khớp với tên đã cho sau khi nâng cấp lên AppCompat v23

784
Vini.g.fer 2015-08-19 04:39.

Tôi luôn lập trình Android với Eclipse và quyết định bắt đầu chuyển sang Android Studio . Tôi quyết định sử dụng cùng một SDK mà tôi đã có cho Eclipse, sau đó:

  • Bắt đầu một dự án mới
  • Đặt SDK tối thiểu 4.0 (API cấp 14)
  • Chọn tùy chọn Hoạt động trống
  • Tên mặc định được sử dụng cho Tên hoạt động và Tên bố cục
  • Nhấn Kết thúc

Sau một vài giây, Gradle hoàn thành quá trình xây dựng và nó ném cho tôi hai lỗi với các thông báo sau trong tệp Teste4 \ app \ build \ Intermediateates / boom-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values -v23 \ giá trị-v23.xml:

Lỗi: (2) Lỗi khi truy xuất cấp độ gốc cho mục: Không tìm thấy tài nguyên phù hợp với tên đã cho 'android: TextAppearance.Material.Widget.Button.Inverse'.

Lỗi: (2) Lỗi khi truy xuất phụ huynh cho mục: Không tìm thấy tài nguyên nào khớp với tên đã cho 'android: Widget.Material.Button.Colored'.

Trong Tệp -> Cấu trúc dự án -> Mô-đun: ứng dụng (cột bên trái) -> tab Thuộc tính , tôi đã thiết lập các phiên bản sau:

  • "Biên dịch phiên bản Sdk": Android 5.1 (API cấp 22)
  • "Phiên bản công cụ xây dựng": 23.0.2

Tôi nên làm gì để sửa lỗi này?

Tôi đã thử những gì được đề xuất trong câu hỏi Stack Overflow appcompat-v7: 21.0.0 ': Không tìm thấy tài nguyên nào khớp với tên đã cho: attr' android: actionModeShareDrawable ' , nhưng nó không hoạt động.

23 answers

1148
Bryan Herbst 2015-08-19 04:47.

Phiên bản SDK biên dịch của bạn phải khớp với phiên bản chính của thư viện hỗ trợ.

Vì bạn đang sử dụng phiên bản 23 của thư viện hỗ trợ, bạn cần biên dịch dựa trên phiên bản 23 của Android SDK.

Ngoài ra, bạn có thể tiếp tục biên dịch dựa trên phiên bản 22 của Android SDK bằng cách chuyển sang thư viện hỗ trợ mới nhất v22.

137
Sourav Nanda 2015-08-27 16:45.

Điều này xảy ra vì sau khi cập nhật, Android Studio sử dụng phiên bản API 23 theo mặc định.

Những điều sau đây đã làm việc cho tôi:

Nhấn Ctrl+ Shift+ Alt+ Sđể đến trang cấu trúc dự án. Đi tới tab thuộc tính và thay đổi 23.0.0 thành 22.0.1 (hoặc tương đương với những gì bạn đã sử dụng trước đó) trong vùng công cụ xây dựng và xây dựng lại dự án của bạn.

Nếu điều đó không hiệu quả, hãy chuyển đến gradle: app và sau đó

compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'

Chỉnh sửa v7: 23.0.0 thành v7: 22.2.1 như hình trên và đồng bộ gradle. Điều này chắc chắn sẽ hiệu quả.

115
Ravikant Paudel 2015-09-03 20:49.

Khi bạn cập nhật Android Studio của mình, nó sử dụng phiên bản API 23 theo mặc định, đây là lý do chính của sự xuất hiện của nó. Vì thế,

Đầu tiên, hãy kiểm tra phiên bản AppCompat của bạn trong build.gradle (Mô-đun: ứng dụng) Tức là

Nếu sau khi thay đổi thành 23 mà xảy ra lỗi thì chỉ cần tải xuống

Compile Sdk Version to API 23, and Build Tools Version to 23.0.0

từ Trình quản lý SDK. Nếu đã được tải xuống thì:

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

Nhấp vào Nút Trình quản lý SDK và mở hộp thoại.

Nhấp vào Nền tảng SDK và kiểm tra xem Android 6.0 có được tải xuống hay không.

nếu không, hãy tải xuống trước. Sau khi hoàn tất tải xuống, hãy nhấp vào Apply.

Bây giờ bạn cần áp dụng các thay đổi cho dự án của mình từ cài đặt. Sau đó nhấn Ctrl+ Alt+ Shift+S để mở cài đặt

  1. Nhấp vào ứng dụng từ danh sách.
  2. Nhấp vào thuộc tính
  3. Thay đổi phiên bản SDK biên dịch của bạn thành API 23
  4. Thay đổi phiên bản công cụ xây dựng của bạn thành 23.0.0

Đừng quên xây dựng lại dự án của bạn.

Sau đó lỗi của bạn sẽ không còn nữa.

70
Pelanes 2015-12-18 23:10.

Nếu bạn đã cố gắng thay đổi mục tiêu thành phiên bản GooglePlayServices hoặc AppCompatv7 trước đó và nó không hoạt động, hãy kiểm tra xem bạn có bất kỳ phụ thuộc thư viện dự án nào không, dự án này sẽ nhắm mục tiêu phiên bản mới nhất của bất kỳ thư viện nào trong số này. Điều đó đã xảy ra với tôi với dự án Thư viện Google Maps Utils:

thay thế:

compile 'com.google.android.gms:play-services:+'

đến

compile 'com.google.android.gms:play-services:8.3.0'

Sau đó, bạn có thể tiếp tục nhắm mục tiêu đầy đủ API 22

Nếu nó vẫn không biên dịch, đôi khi hữu ích để đặt API compileSdkVersion thành 23 và targetSdkVersion thành 22.

35
Stucky 2015-08-25 05:34.

Tôi đồng ý với câu trả lời trước. Phiên bản SDK biên dịch của bạn phải khớp với thư viện hỗ trợ. Đây là những gì tôi đã làm.

  1. Bạn có thể đi tới Trình quản lý SDK và trong Nền tảng SDK, cài đặt Android 5.X với API cấp 23.
  2. Trong Cấu trúc dự án, thay đổi phiên bản SDK biên dịch thành API 23 và Phiên bản công cụ xây dựng thành 23.0.0

Sau đó, nó sẽ xây dựng mà không có vấn đề.

22
Dharma Sai Seerapu 2015-10-18 19:26.

Bạn cần đặt compileSdkVersion thành 23.

Vì API 23 Android đã xóa các gói Apache Http không được dùng nữa, vì vậy nếu bạn sử dụng chúng cho các yêu cầu máy chủ, bạn sẽ cần thêm useLibrary 'org.apache.http.legacy'vào build.gradlenhư đã nêu trong liên kết này:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}
15
Jorgesys 2015-10-09 13:45.

Vấn đề này được đặt ra vì bây giờ phiên bản SDK biên dịch phải khớp với phiên bản chính của thư viện Hỗ trợ Android.

Trong trường hợp của tôi, tôi có Android Support Libraryphiên bản 23, vì vậy tôi phải biên dịch dựa trên Android SDK version 23, và tôi đã phải thay đổi điều này trong build.gradletệp của mình :

Một số bạn sẽ cần cài đặt SDK, Android 6.0 (API 23)

và đừng quên Đồng bộ hóa dự án với các tệp gradle

12
dhiku 2015-09-16 03:26.
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'
}
9
Naveed Ahmad 2015-09-03 22:01.

Tôi đã tìm thấy giải pháp, Sự cố bắt đầu khi tôi cập nhật sdk, sau đó tôi sử dụng buildToolsVersion khác ('22 .0.1 ') và tôi đang sử dụng thư viện hỗ trợ khác như biên dịch' com.android.support:appcompat-v7:23.0.0 ' , cho bạn thấy trong hình ảnh bên dưới

Điều này đã gây ra sự cố của " android.widget.Material ..." Sau đó, tôi đã sử dụng cùng một phiên bản cho thư viện hỗ trợ như biên dịch 'com.android.support:appcompat-v7:22.0.1' và DONE của nó. (Hiển thị cho bạn trong ảnh chụp màn hình bên dưới)

9
Inzimam Tariq IT 2015-09-07 18:43.

Bạn nên biên dịch dự án của mình với phiên bản mới nhất để cập nhật và cài đặt từ SDK của bạn. Đồng bộ hóa dự án của bạn với sync project with Gradle fileNút.
Bạn cũng có thể tiếp tục với phiên bản hiện có nhưng hãy kiểm tra xem nó đã được cài đặt đúng cách dưới hình ảnh cho biết API 22 được cài đặt đúng chưa.

Và đồng bộ hóa dự án của bạn nếu cần.

nó có thể giúp.

8
RWIL 2015-09-02 03:46.

Như đã chỉ ra bởi Tanis.7x, phiên bản thư viện hỗ trợ (23) không khớp với targetSdkVersion (22)

Bạn có thể sửa lỗi này bằng cách làm như sau:

Trong build.gradetệp của mô-đun ứng dụng của bạn, hãy thay đổi dòng mã sau

compile 'com.android.support:appcompat-v7:23.0.0'

Đến

compile 'com.android.support:appcompat-v7:22.+'

Thao tác này sẽ sử dụng phiên bản appcompat mới nhất tương thích với SdkVersion 22.

7
Oskar 2017-02-05 01:22.

Phiên bản SDK biên dịch của bạn phải khớp với phiên bản chính của thư viện hỗ trợ. Đây là giải pháp cho vấn đề của bạn. Bạn có thể kiểm tra nó dễ dàng trong Gradle Scripts trong build.gradletệp. Fx: nếu bạn compileSdkVersion23 tuổi thì thư viện biên dịch của bạn phải bắt đầu từ 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'
}

Và luôn kiểm tra xem Studoi Android của bạn có Cấp API được hỗ trợ hay không. Bạn có thể kiểm tra nó trong SDK Android của mình, như sau:

6
Alecs 2016-04-21 03:52.

Trong trường hợp của tôi, đó là phiên bản cao hơn của Google-play-services. Tôi đặt chúng thành 7.0.0 (không phải 8.x) và tất cả đều ổn.

5
CoolMind 2016-12-20 02:23.

Tôi muốn hạ cấp từ API 23 xuống 22 và gặp lỗi này. Tôi đã phải thay đổi tất cả build.gradle các tệp trong một dự án để biên dịch.

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'
}
4
Lentyai 2016-03-21 22:34.

Đây là những gì đã giúp tôi: Thêm nền tảng Android cụ thể

Những gì cần phải làm là những điều sau đây ... Trong trường hợp của tôi đó là cordovanhưng điều này cũng phù hợp cho ionic, phonegapvà các khuôn khổ khác như thế này:

  1. liệt kê tất cả các nền tảng được cài đặt cho dự án của bạn: cordova platform list. Bạn sẽ thấy một cái gì đó như thế này:

  1. loại bỏ các nền tảng android: cordova platform remove android.

  2. sau đó thêm các nền tảng Android cụ thể: cordova platform add [email protected].

Chúc may mắn! :)

3
sonida 2015-11-05 00:47.

Tôi có những vấn đề tương tự. Tôi đã giải quyết vấn đề của mình bằng cách cập nhật gradle.build cho mỗi mô-đun con lên phiên bản trình biên dịch mới nhất.

2
Stav Bodik 2018-02-11 05:50.

Mọi thứ đều tuyệt vời nhưng không ai trong số các bạn giải thích nơi tải xuống các công cụ xây dựng SDK

1
Ali Zarei 2015-09-09 21:44.

Một giải pháp khác: điều hướng đến

\sdk\extras\android\m2repository\com\android\support\appcompat-v7\23.x.x

mở .aartệp bằng 7-zip hoặc winrar, trong thư mục res xóa values-23thư mục và lưu các thay đổi.

1
Alex Zaraos 2015-09-25 10:47.

trên mô-đun: ứng dụng (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'
}

dự án: nameAppXXXX (Gradle)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

và chỉnh sửa hoạt động AppCompatActivity của bạn thành Hoạt động ví dụ:

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);
    }


}
1
Ganesh Kanna 2016-03-04 20:04.

Đảm bảo rằng tất cả những thứ này đều được cập nhật.

1
Matthew Read 2016-03-05 10:05.

Nâng cấp Android Studio.

Tôi gặp sự cố này với Android Studio 1.3.1 và không có câu trả lời nào khác phù hợp với tôi, nhưng sau khi cập nhật lên 1.5.1 thì không có vấn đề gì.

1
Edukondalu Thaviti 2016-12-30 20:19.

Nếu bạn đang sử dụng phonegap (đa nền tảng) và gặp sự cố tương tự ở trên, chỉ cần xóa nền tảng android bằng lệnh dưới đây.

nền tảng phonegap loại bỏ android

Và thêm một lần nữa.

nền tảng phonegap thêm android

Sau đó, vấn đề được giải quyết cho tôi.

0
TheBaj 2018-11-13 10:12.

Như những người khác đã đề cập của bạn compile sdk versionphải phù hợp với support library'sphiên bản chính của bạn . Điều này tuy nhiên, cũng có liên quan subprojectsnếu bạn có bất kỳ.

Trong trường hợp bạn làm như vậy, bạn có thể đặt subprojectsphiên bản sdk biên dịch của mình bằng tập lệnh sau:

subprojects { subproject ->
afterEvaluate{
    if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
        android {
            compileSdkVersion rootProject.ext.compileSdkVersion
            buildToolsVersion rootProject.ext.buildToolsVersion
        }
      }
   }
}

Thêm tập lệnh này vào build.gradletệp gốc của bạn .

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Làm thế nào để xây dựng một quả địa cầu từ Scratch

Làm thế nào để xây dựng một quả địa cầu từ Scratch

Thời gian, sự kiên nhẫn, thời gian, sự cống hiến và thời gian chỉ là một vài trong số những thứ mà Peter Bellerby cần để thành lập và sau đó điều hành Bellerby & Co. Globemakers, một trong những công ty duy nhất trên Trái đất vẫn sản xuất các quả địa cầu bằng tay.

Năm giai đoạn đau buồn sau khi mất việc làm

Năm giai đoạn đau buồn sau khi mất việc làm

Đó là một ngày thứ Bảy, máy bay của tôi hạ cánh, và tôi đã sẵn sàng để thư giãn trong một kỳ nghỉ cuối tuần ngắn ngủi, khi một email đến trên điện thoại của tôi. Tôi đã mất việc.

Giữ an toàn cho danh tính của bạn với một cảnh báo đóng băng hoặc gian lận tín dụng

Giữ an toàn cho danh tính của bạn với một cảnh báo đóng băng hoặc gian lận tín dụng

Nếu bạn đã từng bị đánh cắp danh tính của mình, bạn biết đó là một trải nghiệm đáng sợ và căng thẳng. Một cách không phổ biến để ngăn chặn nó? Tín dụng bị đóng băng.

Buổi ra mắt phần 3 của The Good Place có một học sinh mới: Khán giả

Buổi ra mắt phần 3 của The Good Place có một học sinh mới: Khán giả

Eleanor (Kristen Bell) dường như đã tình nguyện cho chúng tôi làm vật tưởng nhớ. NBC's The Good Place là một chương trình thích thử thách tốt.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language