ไม่พบทรัพยากรที่ตรงกับชื่อที่ระบุ: attr 'android: keyboardNavigationCluster' เมื่ออัปเดตเป็น Support Library 26.0.0


215

ฉันพบปัญหานี้แล้วในขณะที่อัปเดตเป็น Support Library เวอร์ชันล่าสุด 26.0.0 ( https://developer.android.com/topic/lไลบรารี/support-library/revisions.html#26-0-0 ):

ข้อผิดพลาด: (18, 21) ไม่พบทรัพยากรที่ตรงกับชื่อที่กำหนด: attr 'android: keyboardNavigationCluster'

/.../app/build/intermediates/res/merged/beta/debug/values-v26/values-v26.xml
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(15, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:(18, 21) No resource found that matches the given name: attr 'android:keyboardNavigationCluster'.
Error:Execution failed for task ':app:processBetaDebugResources'.

com.android.ide.common.process.ProcessException: ล้มเหลวในการเรียกใช้ aapt

ไฟล์มาจากไลบรารีการสนับสนุน:

<style name="Base.V26.Widget.AppCompat.Toolbar" parent="Base.V7.Widget.AppCompat.Toolbar">
    <item name="android:touchscreenBlocksFocus">true</item>
    <item name="android:keyboardNavigationCluster">true</item>
</style>

เรากำลังใช้รุ่นต่อไปนี้:

ext.COMPILE_SDK_VERSION = 26
ext.BUILD_TOOLS_VERSION = "26.0.1"

ext.MIN_SDK_VERSION = 17
ext.TARGET_SDK_VERSION = 26
ext.ANDROID_SUPPORT_LIBRARY_VERSION = "26.0.0"
ext.GOOGLE_PLAY_SERVICES_LIBRARY_VERSION = "11.0.2"

compile 'com.android.support:appcompat-v7:' + ANDROID_SUPPORT_LIBRARY_VERSION
compile 'com.android.support:design:' + ANDROID_SUPPORT_LIBRARY_VERSION
compile 'com.android.support:recyclerview-v7:' + ANDROID_SUPPORT_LIBRARY_VERSION

ความคิดใด ๆ


5
มันยังคงมีปัญหากับรีลีสใหม่ล่าสุด (26.0.1): developer.android.com/topic/l
ไลบรารี/support

คำตอบ:


314

ฉันสามารถแก้ไขได้โดยอัปเดตเวอร์ชัน sdk และเครื่องมือต่าง ๆ ในระดับเสียง compileSdkVersion 26 buildToolsVersion "26.0.1"

และsupport library 26.0.1 https://developer.android.com/topic/l ไลบรารี/support-library/revisions.html#26-0-1


4
สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันต้องอัปเกรดบริการ Google Play เป็น 11.2 จากนั้นมีข้อผิดพลาดด้านบนเกิดขึ้นและคำตอบของคุณไม่ได้ ฉันยังอัปเกรดสิ่งสนับสนุนทั้งหมดเป็น 26.0.1 แต่ก็ยังไม่มีโชค คุณมีความคิดอื่น ๆ อีกไหม?
Nandor Poka

แต่การอัพเดทเป็น 26 จะมีผลกระทบสำคัญกับสิ่งอื่น ๆ อีกมากมาย การรวมการแจ้งเตือนไม่ทำงานจนกว่าจะมีการสร้างแชนเนลที่เหมาะสมสำหรับ Android 8.0 ใช่ไหม
Patric

5
@patric SDK ที่คอมไพล์ไม่ใช่ SDK เป้าหมาย
ผู้ใช้ XH6

หากวิธีนี้ใช้ไม่ได้ผลกับคุณลองอ่านคำตอบของแซมด้านล่าง
Benny

2
ถ้าฉันไม่ต้องการอัปเดต compileSdkVersion ตั้งแต่วันที่ 25 เนื่องจากความต้องการทางธุรกิจ จะกำจัดสิ่งนี้ได้อย่างไร
binaryKarmic

53

เปลี่ยนเวอร์ชั่น SDK ของคอมไพล์:

compileSdkVersion 26

รุ่นเครื่องมือสร้าง:

buildToolsVersion "26.0.1"

เวอร์ชั่น SDK เป้าหมาย:

targetSdkVersion 26

อ้างอิง:

compile 'com.android.support:appcompat-v7:26+'
compile 'com.android.support:design:26+'
compile 'com.android.support:recyclerview-v7:26+'
compile 'com.android.support:cardview-v7:26+'

Sync Gradle


2
ได้รับคำเตือน: หลีกเลี่ยงการใช้ + ในหมายเลขเวอร์ชั่น
Qadir Hussain

2
สิ่งนี้ใช้ได้สำหรับฉัน ลบ + จากทั้งหมดเพื่อกำจัดคำเตือน
Qadir Hussain

2
อย่าใช้ + คุณต้องการรับบิลด์ที่ทำซ้ำได้และมีการควบคุมเต็มรูปแบบในการพึ่งพาของคุณ คุณไม่ต้องการแอปของคุณจะเริ่มต้น bugging หลังจากที่สร้างใหม่เพราะมันเงียบ ๆ อัพเกรด lib แล้ว ...
Snicolas

1
คุณไม่จำเป็นต้องอัปเดตสิ่งtargetSdkVersionนี้เพื่อให้ทำงานได้ การตั้งค่าเป็น 26 จะมีความหมายอื่น ๆ เช่นคุณต้องทำให้แอปของคุณใช้งานร่วมกับ Android 8.0 ได้
ataulm

ไฟล์ที่ฉันต้องเพิ่มสิ่งนี้คุณสามารถเป็นแนวทางใน @ataulm
Ravi Mehta

35

ฉันต้องเปลี่ยนcompileSdkVersion = 26และbuildToolsVersion = '26.0.1'ในbuild.gradleไฟล์อ้างอิงทั้งหมดของฉัน


2
คุณควรใช้ค่าคงที่ใน gradle.properties สำหรับหมายเลขรุ่นทั้งหมดของคุณและใช้ในไฟล์ build.gradle ของคุณ: api "com.android.support:appcompat-v7:$ANDROID_COMPATIBILITY_VERSION"
Snicolas

13

react-native-fbsdkในโครงการตอบสนอง-พื้นเมืองของข้อผิดพลาดนี้ถูกสร้างขึ้นใน การอัพเดตreact-native-fbsdk/android/build.gradleดังต่อไปนี้ช่วยแก้ไขปัญหา

compileSdkVersion 26
buildToolsVersion "26.0.1"

7
การเพิ่มด้านล่างลงใน root build.gradle ไม่จำเป็นต้องแก้ไขไฟล์ build.gradle ของโมดูลsubprojects { afterEvaluate {project -> if (project.hasProperty("android")) { android { compileSdkVersion 26 buildToolsVersion '26.0.1' } } } }
Yalamber

9

ฉันพบข้อผิดพลาดเดียวกันนี้อย่างแน่นอนและ Googling พยายามค้นหาสิ่งที่ฉันทำผิดเพราะสร้างรหัสค่า -26 และไม่ใช่รูปแบบที่ฉันให้ไว้ ฉันลองทุกอย่างจาก Gradle 4.0 ไปเป็น Android Studio ตัวอย่าง 3.0 ถึง canary channel คุณตั้งชื่อมัน

ฉันไม่เคยพบคำตอบออนไลน์ ในที่สุดฉันก็สามารถกลับไปที่ Dev Android Studio มาตรฐานและ 2.3.3 Gradle ได้เพราะฉันตั้งใจซ่อมมัน :)

กลับกลายเป็นว่าฉันมุ่งเน้นไปที่การปรับปรุงโครงการห้องสมุดของฉันที่ฉันไม่ได้สังเกตเห็นว่าข้อผิดพลาดเกิดจากโมดูลย่อยที่ไม่ได้ใช้ (แอพสาธิต) ที่ซ้อนอยู่ในโครงการห้องสมุดของฉัน เมื่อฉันอัปเดตโมดูลย่อยเพื่อให้ตรงกับ 26 build tools และ 26+ design and support libraries ปัญหาของฉันก็หายไป

ไม่แน่ใจว่านั่นคือสิ่งที่คุณเห็นเช่นกัน แต่โดยส่วนตัวฉันเพิ่งอัปเดต lib เพื่อปล่อยอีกครั้งดังนั้นจึงไม่ได้สนใจโมดูลแอปตัวอย่างและข้อผิดพลาดที่ดูเหมือนจะเกี่ยวข้องกับ 26 sdk ซึ่งฉันแตะเท่านั้น โมดูล lib จึงไม่คิดที่จะตรวจสอบอีกโมดูล นั่นคือปัญหาทั้งหมดสำหรับฉัน หวังว่าจะแก้ไขคุณเช่นกัน ฉันมีข้อผิดพลาดนี้ใน 2 โครงการห้องสมุดและแก้ไขทั้งสองข้อ

Goodluck ไม่ว่าด้วยวิธีใดและหากวิธีนี้ไม่ช่วยแก้ปัญหาของคุณโปรดแชร์สิ่งที่ทำ BTW 26.0.01 build tools และ 26.1.0 การออกแบบและการสนับสนุนคือที่ที่ฉันไปถึงจุดสิ้นสุดในที่สุดแม้ว่า 26.0.1 ก็ใช้งานได้ดีเช่นกัน


มันแก้ปัญหาได้จริง ๆ (ถ้าคุณมีหลายโมดูล)
D. Sergeev

8

ผมมีข้อผิดพลาดตรงนี้และฉันรู้ว่าฉันcompileSdkVersionเป็นที่ตั้ง25ของฉันและเป็นที่ตั้งbuildToolsVersion"26.0.1"

ดังนั้นฉันก็เปลี่ยนcompileSdkVersionไป26และซิงค์ Gradle มันแก้ไขปัญหาสำหรับฉัน

แก้ไข: ฉันtargetSDKVersionถูกตั้งค่าเป็น26


8

ฉันมีข้อผิดพลาดคล้ายกันสำหรับ react-native-youtube & react-native-ปฐมนิเทศ

คิดออกว่า build.gradle ของโครงการเหล่านั้นใช้compileSdkVersion 23แต่คุณสมบัติ: android: keyboardNavigationCluster ถูกเพิ่มตั้งแต่api 26(android 8)

ดังนั้นวิธีการแก้ไข?

วิธีหนึ่งในการแก้ไขปัญหานี้ได้อย่างง่ายดายคือแก้ไข /android/build.gradle ของคุณ (!!! NOT / android/app/build.gradle) และเพิ่มรหัสเหล่านั้นที่ด้านล่างของไฟล์

สิ่งนี้อนุญาตให้คุณบังคับ SDK และ BuildTool-Version ที่ submodules ของคุณใช้:

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 27
                buildToolsVersion "27.0.2"
            }
        }
    }
}

7

ฉันยังประสบปัญหานี้คุณเพียงแค่ต้องทำการเปลี่ยนแปลง 2:

ชื่อไฟล์: android / build.gradleพูดถึงโค้ดด้านล่างนี้

subprojects {
   afterEvaluate { 
     project -> if (project.hasProperty("android")) { 
       android { 
        compileSdkVersion 26 buildToolsVersion '26.0.2' 
       } 
      }
    } 
}

ชื่อไฟล์: android / app / build.gradle เปลี่ยนรุ่น compliesdk ของคุณและ buildToolVersion แบบนี้:

compileSdkVersion 26 buildToolsVersion "26.0.2"

และใน

dependencies {
    compile 'com.android.support:appcompat-v7:26.0.2'
}

7

ฉันมีปัญหาเดียวกันกับโครงการ Ionic 2 ของฉันทั้งหมดที่ฉันทำเพื่อแก้ไขปัญหาคือ

  • เปิด "ionic_project_folder / platforms / android / project.properties"
  • เปลี่ยนtarget = android-25เป็นtarget = android-26
  • วิ่ง ionic build --release android

หวังว่านี่จะช่วยใครซักคน!


โครงการของฉันเปลี่ยนเป็นtarget=android-26แต่ยังคงแสดงข้อผิดพลาดนี้
Yuyang เขา

6
//Adding this to the root build.gradle solved my problem, thanks @Yalamber
subprojects {
        afterEvaluate { project ->
            if (project.hasProperty("android")) {
                android {
                    compileSdkVersion 26
                    buildToolsVersion '26.0.2'
                }
            }
        }
    }

คุณสามารถแบ่งปันข้อมูลเพิ่มเติมด้วยรหัสเพื่อให้เข้าใจคำตอบของคุณได้มากขึ้น
Prags

โดยปกติแล้วจะเป็นการดีกว่าที่จะอธิบายวิธีแก้ปัญหาแทนที่จะเพียงแค่โพสต์แถวของรหัสที่ไม่ระบุชื่อ คุณสามารถอ่านฉันจะเขียนคำตอบที่ดีได้อย่างไรและอธิบายคำตอบที่อิงกับรหัสทั้งหมด
Anh Pham

1
ขอบคุณ! คำตอบที่ดีที่สุด โดยพื้นฐานแล้วการพึ่งพาโครงการ (โครงการ node_modules) มีรุ่น SDK ที่แตกต่างกัน การเพิ่มรหัสนี้ไปยังระดับรูท build.gradle ทำให้มั่นใจว่าการขึ้นต่อกันทั้งหมดเหล่านี้ใช้เวอร์ชัน sdk ที่ระบุและโครงการสามารถสร้างได้ : D
Nigh7Sh4de

4

หลังจากอัปเดตสตูดิโอ Android ของคุณเป็น 3.0 หากข้อผิดพลาดนี้เกิดขึ้นเพียงอัปเดตคุณสมบัติการไล่ระดับเสียงนี่คือการตั้งค่าที่แก้ไขปัญหาของฉัน:

compileSdkVersion 26

targetSdkVersion 26

buildToolsVersion '26.0.2'

26.0.2สร้างรุ่นแก้ไขสิ่งต่าง ๆ สำหรับฉัน
Karl Taylor

3

ฉันปรับปรุงโครงการของฉันapp/build.gradleให้มี

compileSDkVersion 26
buildToolsVersion '26.0.1'

อย่างไรก็ตามปัญหาคือจริง ๆ แล้วกับreact-native-fbsdkแพคเกจ node_modules/react-native-fbsdk/android/build.gradleผมต้องเปลี่ยนการตั้งค่าเดียวกันใน


3

ใน android studio
คลิกขวาที่โครงการ (เนื่องจากฉันมีโครงการ Cordova ฉันมี CordovaLib และ android: ฉันเลือก android ในกรณีของฉัน)

  1. เลือกเปิดการตั้งค่าโมดูล
  2. ใน modal โครงสร้างโครงการที่ผุดขึ้นเลือกโครงการในส่วนโมดูลในแผงด้านข้าง (อีก Android ในกรณีของฉัน)
  3. คลิกที่แท็บการพึ่งพา
  4. คลิกที่ปุ่มเครื่องหมายบวกสีเขียวที่มุมขวาบน
  5. เลือก Library Dependency
  6. เลือก app-compat-v7 จากดรอปดาวน์
  7. ทำความสะอาดโครงการและสร้างใหม่

นี่เป็นวิธีที่ง่ายกว่าในการแก้ไขมากกว่าการแก้ไขไฟล์ทั้งหมดด้วยตนเอง
Robert Liberatore

2

ฉันตีมันเมื่อเร็ว ๆ นี้และจำได้ว่ามันมาจากไหน มันไม่ตรงกันระหว่างรุ่น Xamarin.Android. * และรุ่น Android SDK ที่ติดตั้ง

ปัจจุบัน VS2017 15.5.3ค่าเริ่มต้นโครงการใหม่สำหรับ nuGet Xamarin.Android.*มี25.4.0.2และเริ่มต้น VS ติดตั้งสำหรับการพัฒนาข้ามแพลตฟอร์มดังต่อไปนี้แพคเกจ Android SDK:

  • Android 7.1- ตังเม
    • แพลตฟอร์ม Android SDK 25
    • Google API อิมเมจระบบ Intel x86 Atom

หากคุณอัปเกรดโซลูชัน nuGet Xamarin.Android.*เป็น26.1.0.1แล้วคุณจะต้องติดตั้งการติดตามใน Android SDK:

  • Android 8.0- Oreo
    • แพลตฟอร์ม Android SDK 26
    • Google API อิมเมจระบบ Intel x86 Atom

2

ฉันกำลังเผชิญกับปัญหาเดียวกันสำหรับหนึ่งในโครงการ PhoneGap ของฉัน (Android studio 3.0.1) ในการแก้ไขปัญหานี้ฉันได้ปฏิบัติตามขั้นตอนต่อไปนี้

1) คลิกขวาที่ชื่อโครงการ (ในเคส android ของฉัน) เลือก "เปิดการตั้งค่าโมดูล"

2) เลือกโมดูล (android และ CordovaLib)

3) คลิกคุณสมบัติที่ด้านบน

4) Chose Compile SDK เวอร์ชั่น (ฉันเลือก API 26: Android 8.0)

5) เลือกรุ่นเครื่องมือสร้าง (ฉันเลือก 26.0.2)

6) ความเข้ากันได้ของแหล่งที่มา (1.6)

7) เป้าหมายความเข้ากันได้ (1.6)

คลิกตกลงและสร้างโครงการใหม่

ลิงค์ต่อไปนี้แสดงการตั้งค่าของฉันสำหรับขั้นตอนที่ฉันติดตาม

https://app.box.com/s/o11xc8dy0c2c7elsaoppa0kwe1d94ogh https://app.box.com/s/ofdcg0a8n0zalumvpyju58he402ag1th


2

เมื่อคุณพยายามเปลี่ยน targetSDKVersion 26 เป็น 25 ในขณะนั้นฉันพบวิธีแก้ปัญหาของไม่พบทรัพยากรที่ตรงกับชื่อที่กำหนด: attr 'android: keyboardNavigationCluster' เมื่ออัปเดตเป็น Support Library 26.0.0

เพียงเปลี่ยนรหัสนี้จาก Build.gradle ของคุณ

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.0.1'
            }
        }
    }
}

ถึง

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.2.0'
            }
        }
    }
}

2

ฉันได้รับปัญหานี้เมื่อคอมไพล์ react-native-fbsdk

ฉันแก้ไขปัญหานี้โดยการเปลี่ยนbuild.gradleจากreact-native-fbsdk

จาก

compile('com.facebook.android:facebook-android-sdk:4.+')

ถึง

compile('com.facebook.android:facebook-android-sdk:4.28.0')

1

ปัญหานี้เกิดจากหนึ่งในห้องสมุดสำหรับฉันที่จำเป็นต้องมีการรวบรวมเวอร์ชัน 26

การทำให้ targetSdkVersion เป็น 26 จะทำให้เกิดปัญหาอื่น ๆ และคุณจะต้องปรับแต่งแอพของคุณเพื่อปรับให้เข้ากับแพลตฟอร์มโอรีโอ นี่ไม่ใช่ทางออกที่ถูกต้องสำหรับทุกคน

เพียงทำcompileSdkVersion to 26และbuildToolsVersion to 26.0.2ทำงานให้ฉัน

เราควรอัพเดตไลบรารีการสนับสนุนทั้งหมดเพื่อใช้ 26.1.0 หรือใหม่กว่า



1

ฉันแก้ไขปัญหานี้โดยทำการเปลี่ยนแปลงบางอย่างในไฟล์ build.gradle

การเปลี่ยนแปลงในroot build.gradleมีดังนี้:

subprojects {
   afterEvaluate { 
     project -> if (project.hasProperty("android")) { 
       android { 
        compileSdkVersion 26 
        buildToolsVersion '26.0.1' 
       } 
      }
    } 
}

การเปลี่ยนแปลงใน build.gradle มีดังนี้:

compileSdkVersion 26 
buildToolsVersion "26.0.1"

และ

dependencies {
    compile 'com.android.support:appcompat-v7:26.0.1'
}

1

สำหรับทุกคนที่ใช้ nativescript และประสบปัญหานี้: คุณสามารถเพิ่มได้

compileSdkVersion 26
buildToolsVersion '26.0.1'

ใน App_Resources / Android / app.gradle (ใต้android {)

จากนั้นเรียกใช้tns platform remove androidและtns build androidในรูทโครงการของคุณ


0

ตรวจสอบให้แน่ใจว่าคุณมี Android SDK 8.0 ในสภาพแวดล้อมการพัฒนาของคุณ ฉันมีปัญหาเดียวกันบน MAC ของฉันและติดตั้ง SDK 8.0 และเครื่องมือของมันก็ซ่อมได้ ฉันมีปัญหาเดียวกันบน Windows ฉันกำลังดาวน์โหลด SDK ตอนนี้


0

ฉันมีปัญหาเดียวกันกับอิออน

cordova platform remove android
cordova platform add android@6.4.0

และแทนที่ในแพลตฟอร์ม / android / projet.properties

cordova.system.library.1=com.android.support:support-v4+

ถึง

cordova.system.library.1=com.android.support:support-v4:26+

0

สำหรับสิ่งนี้คุณต้องทำสิ่งต่าง ๆ ด้านล่าง 1. คลิกขวาที่โครงการคลิก

2. เปิดโมดูลการตั้งค่า -> ในแท็บคุณสมบัติ -> เปลี่ยน sdk ที่รวบรวมและสร้างเครื่องมือรุ่นเป็น 26,26.0.0

3. คลิกตกลง

มันทำงานสำหรับฉันหลังจากพยายามชั่วโมง


0

ฉันแก้ไขปัญหานี้โดยทำสิ่งต่อไปนี้:

compileSdkVersion 26
buildToolsVersion "26.0.1"

compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:design:26.0.1'
compile 'com.android.support:cardview-v7:26.0.1'
compile 'com.android.support:recyclerview-v7:26.0.1'

กรุณาใช้ภาษาอังกฤษในเว็บไซต์นี้เท่านั้น หากคุณชอบที่จะใช้ภาษาโปรตุเกสมีกองมากเกิน em Português
Tom Zych

-1

เพียงแค่ล้างโครงการของคุณและสร้างอีกครั้ง

./gradlew  app:clean app:assembleDebug

แต่จะไม่ทำงานเมื่อ targetSdkVersion หรือ compileSdkVersion คือ 25

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.