การรวมกันของรายการวัสดุ Android และ appcompat ล้มเหลว


223

ฉันมีเกรดต่อไป

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.android.material:material:1.0.0-rc01'
}

แต่เมื่อฉันต้องการสร้างแอพฉันจะได้รับบันทึกต่อไป:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.

Okey! ไปที่รายการและทำ:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ru.chopcode.myapplication">

    <application
        tools:replace="android:appComponentFactory"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
    </application>

</manifest>

จากนั้นฉันได้รับข้อผิดพลาดนี้ใน Logcat ของฉัน:

Manifest merger failed with multiple errors, see logs that I have Linked with it

2
ลองลบบรรทัดเหล่านี้: การใช้งาน 'com.android.support:appcompat-v7:28.0.0-rc01' และการใช้งาน 'com.android.support.constraint: ข้อ จำกัด เค้าโครง: 1.1.2'
vcapra1

2
ฉันคิดว่าชุดวัสดุทั้งหมดรวมอยู่ในการออกแบบ android ลองดูสิ ...
Marcos Vasconcelos

ฉันต้องการ: material.io/design/components/app-bars-bottom.html นี่เป็นการออกแบบ android หรือไม่?
ЕвгенийУсов

คุณสามารถตรวจสอบสิ่งนี้ได้เช่นกัน: stackoverflow.com/a/54825603/1318946
Pratik Butani

android studio ใหม่มีคุณสมบัติในการโยกย้ายแอปพลิเคชันของคุณไปยัง androidX ได้อย่างราบรื่น ตามลิงค์ด้านล่าง github.com/material-components/material-components-android/…
Ravi Jaggarapu

คำตอบ:


15

เพียงแค่เปลี่ยน "rc01" ในบรรทัดแรกและบรรทัดสุดท้ายที่อ้างอิงเป็น "alpha1" นี่ใช้งานได้สำหรับฉัน


พบไฟล์มากกว่าหนึ่งไฟล์กับเส้นทางอิสระของระบบปฏิบัติการ 'META-INF / androidx.core_core.version
Aliton Oliveira

40
ฉันไม่มี "rc01" เขียนไว้ในการติดตั้ง 'com.android.support:appcompat-v7:28.0.0' ยังคงได้รับปัญหา กรุณาแนะนำวิธีแก้ปัญหา
avani kothari

10
คำตอบนี้ควรเป็นความเห็นสำหรับคำถาม
Ananth

459

ฉันมีปัญหาที่คล้ายกัน เพิ่มสองบรรทัดในgradle.propertiesไฟล์:

android.useAndroidX=true
android.enableJetifier=true

สองบรรทัดนี้จะแก้ไขข้อขัดแย้งในการพึ่งพาของฉันโดยอัตโนมัติระหว่างไฟล์ของ google และการอ้างอิงของบุคคลที่สาม นี่คือลิงค์สำหรับติดตาม: https://developer.android.com/topic/l ไลบรารี/support-library/androidx-overview # new-project


6
android.useAndroidX = true
Frank Fang

6
หลังจากเพิ่มข้อผิดพลาดต่อไปนี้จะเกิดขึ้น `` `* เกิดข้อผิดพลาดอะไร: การดำเนินการล้มเหลวสำหรับภารกิจ ': react-native-camera: compileGeneralDebugJavaWithJavac' > การรวบรวมล้มเหลว ดูผลลัพธ์ข้อผิดพลาดคอมไพเลอร์สำหรับรายละเอียด * ลอง: รันด้วยตัวเลือก --stacktrace เพื่อรับ stack trace เรียกใช้ตัวเลือก --info หรือ --debug เพื่อรับเอาต์พุตบันทึกเพิ่มเติม ทำงานด้วย - สแกนเพื่อรับข้อมูลเชิงลึกเต็มรูปแบบ `` `
Dileepa Chandima

@PrinceHamza ตรวจสอบสิ่งนี้เราพบวิธีแก้ปัญหาสำหรับgithub.com/facebook/react-native/issues/
Dileepa Chandima

9
นี่ควรเป็นคำตอบที่ยอมรับได้ วิธีนี้แก้ปัญหาได้
VishalKale

2
"แต่ฉันไม่เห็น" ไฟล์ gradles.properties ""! ใช่ดังนั้นในโฟลเดอร์รูทของแอปในโปรเจ็กต์สตูดิโอให้สร้างไฟล์นั้น (ไม่มีส่วนขยาย) และเพิ่มบรรทัดเหล่านั้น
user1010160

145

ฉันประสบข้อผิดพลาดเดียวกันเมื่อฉันพยายามเพิ่มห้องสมุด Kotlin-KTX ในโครงการของฉัน

ฉันลองใช้การโยกย้าย AndroidX และแก้ไขปัญหาแล้ว!

Refactor / โยกย้ายไปยัง AndroidX


1
ใช้งานได้ แต่คำสั่งการนำเข้าบางรายการที่สร้างขึ้นใช้ชื่อแพ็คเกจที่ล้าสมัย ฉันต้องแก้ไขกลุ่มของพวกเขาเพียงแค่ใช้androidx.*ชื่อแพคเกจใดก็ตามที่ IDE แนะนำว่าเป็นการแก้ไข
Andrew Koster

1
@Mete คำตอบนี้ช่วยชีวิตฉันไว้ ฉันซื้อเบียร์ให้คุณได้ไหม
girish_vr

@ girish_vr ขอบคุณสำหรับข้อเสนอ :) ฉันดีใจที่ใช้งานได้นั่นก็เพียงพอแล้วที่จะทำให้ฉันยิ้มได้
Mete

ฉันพบปัญหานี้เพราะฉันดึงไลบรารี่ "support-v4" รุ่นล่าสุดในไฟล์ build.gradle ของฉัน ... ไม่ใช่วิธีปฏิบัติที่ดี หากฉันอ้างอิงไลบรารีรุ่นเฉพาะในไฟล์ gradle ของฉันฉันจะไม่พบปัญหานี้ตั้งแต่แรก นอกจากนี้หลังจากที่ฉันค้นคว้าเพิ่มเติมอีกเล็กน้อยฉันจะเห็นว่า Google แนะนำให้เปลี่ยนไปใช้ห้องสมุด AndroidX ดังนั้นฉันจึงตัดสินใจกัดกระสุน โชคดีที่ปัญหาทั้งหมดได้รับการแก้ไขหลังจากการอัปเกรด ... หายนะกลับมาและบทเรียนที่เรียนรู้เกี่ยวกับการอ้างอิงแบบไล่ระดับ
BluJ IT

104

เหตุผลที่ล้มเหลว

คุณกำลังใช้ห้องสมุดวัสดุซึ่งเป็นส่วนหนึ่งของAndroidX หากคุณไม่ทราบเกี่ยวกับ AndroidX โปรดทำตามคำตอบนี้

แอปหนึ่งควรใช้ไลบรารี AndroidX หรือไลบรารีสนับสนุน Android เก่า นั่นเป็นเหตุผลที่คุณต้องเผชิญกับปัญหานี้

ตัวอย่างเช่น -

ในระดับของคุณคุณกำลังใช้

  • com.android.support:appcompat-v7 (ส่วนหนึ่งของเก่า - ห้องสมุดสนับสนุน Android -)
  • com.google.android.material:material(ส่วนหนึ่งของ AndroidX) (AndroidX สร้างสิ่งประดิษฐ์ของcom.android.support:design)

สารละลาย

ดังนั้นทางออกคือการใช้ AndroidX หรือห้องสมุดสนับสนุนเก่า ฉันแนะนำให้ใช้ AndroidX เพราะ Android จะไม่อัปเดตไลบรารีสนับสนุนหลังจากรุ่น 28.0.0 ดูบันทึกประจำรุ่นของห้องสมุดสนับสนุน

เพียงแค่ย้ายไปที่ AndroidX นี่คือคำตอบโดยละเอียดของฉันในการโยกย้ายไปยัง AndroidX ฉันกำลังวางขั้นตอนที่จำเป็นจากคำตอบนั้นไว้ที่นี่

ก่อนที่คุณจะโอนย้ายขอแนะนำอย่างยิ่งให้สำรองข้อมูลโครงการของคุณ

โครงการที่มีอยู่

  • Android Studio> เมนู Refactor> ย้ายไปที่ AndroidX ...
  • มันจะวิเคราะห์และจะเปิดหน้าต่าง Refractor ที่ด้านล่าง ยอมรับการเปลี่ยนแปลงที่จะต้องทำ

ภาพ

โครงการใหม่

ใส่ธงเหล่านี้ในของคุณ gradle.properties

android.enableJetifier=true
android.useAndroidX=true

ตรวจสอบ @ แมปห้องสมุดสำหรับแพคเกจ AndroidX เท่ากับ

ตรวจสอบ @ หน้าอย่างเป็นทางการของการโยกย้ายเป็น AndroidX

Jetifier คืออะไร


ยังคงมีข้อผิดพลาดในภายหลัง แต่คำตอบนี้ช่วย: stackoverflow.com/a/49525685/1972372
Big_Chair

3
โปรดอย่าลืมคลิก "Do refactor" ที่ด้านล่างซ้ายหลังจากคลิก "โยกย้ายไปยัง AndroidX"
SupaHam

88

ในกรณีของฉันมันทำงานได้อย่างสมบูรณ์ .. ฉันได้เพิ่มโค้ดสองบรรทัดด้านล่างในไฟล์ Manifest

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

เครดิตไปที่คำตอบนี้

ตัวอย่างไฟล์ Manifest


4
ฉันไม่รู้ว่าฉันจะมีปัญหาในแอปของฉันในภายหลัง แต่มันใช้งานได้!
Aliton Oliveira

4
ใช่ฉันมีปัญหา: พบไฟล์มากกว่าหนึ่งไฟล์กับเส้นทางอิสระของระบบปฏิบัติการ 'META-INF / androidx.core_core.version
Aliton Oliveira

3
จากนั้นฉันได้รับเครื่องมือระบุข้อผิดพลาดไม่ได้ถูกผูกไว้กับแท็กแอปพลิเคชัน
Travis Delly

คุณสามารถโพสต์ logcat แบบเต็ม?
Muhaiminur Rahman

ฉันต้องใช้เครื่องมือในเนมสเปซ: github.com/magus/react-native-facebook-login/issues/…
โยฮันเนสตัวกรอง

29

วิธีแก้ปัญหาง่าย ๆ - โอนย้ายเป็น AndroidX

ในgradle.propertiesเพียงเพิ่มสคริปต์ด้านล่างสองรายการ

android.useAndroidX=true
android.enableJetifier=true

อะไรคือเหตุผล↓

แพ็คเกจทั้งหมดใน AndroidX มีชีวิตอยู่ในเนมสเปซที่สอดคล้องเริ่มต้นด้วยสตริง androidx แพคเกจ Support Library ได้รับการแมปเข้ากับแพ็คเกจ androidx. * ที่สอดคล้องกันแล้ว สำหรับการแม็พแบบเต็มของคลาสเก่าทั้งหมดและสร้างสิ่งประดิษฐ์ไปยังคลาสใหม่ให้ดูที่เพจการสร้างการแพ็กเกจใหม่

โปรดดูหน้าการปรับโครงสร้างแพ็คเกจ


ไม่มีไฟล์ gradle.properties ในโครงการของฉัน (แต่เดิมมันถูกสร้างขึ้นในคราสหลายปีที่ผ่านมาและต่อมาย้ายไปที่สตูดิโอ Android)
Sujith Manjavana

โอ้ ... ฉันไม่ได้เผชิญกับสถานการณ์ดังกล่าวฉันพบหัวข้อด้านล่างที่อาจช่วยให้คุณ stackoverflow.com/a/37389861/6917362 ลองและแสดงความคิดเห็นโปรด
EJ Chathuranga

เพียงสร้างไฟล์นั้นใกล้กับ build.gradle หลักหากไม่มีอยู่และซิงค์โครงการ
Fedir Tsapana

13

เพียงลบการพึ่งพา android.support

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

การอ้างอิงจากหลักเกณฑ์วัสดุ

หากคุณไม่ต้องการเปลี่ยนไปใช้แพ็คเกจ androidx และ com.google.android.material ใหม่คุณสามารถใช้ส่วนประกอบวัสดุผ่านการอ้างอิง com.android.support:design:28.0.0-alpha3

หมายเหตุ: คุณไม่ควรใช้ com.android.support และ com.google.android.dependencies ในแอปของคุณในเวลาเดียวกัน

เพียงแค่ลบการพึ่งพานี้ทำงานได้ดี

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

นี่คือตัวอย่างการอ้างอิงที่สมบูรณ์

    dependencies {
       implementation fileTree(dir: 'libs', include: ['*.jar'])
       implementation 'com.google.android.material:material:1.0.0-beta01'
       implementation 'com.android.support.constraint:constraint-layout:1.1.2'
       testImplementation 'junit:junit:4.12'
       androidTestImplementation 'com.android.support.test:runner:1.0.2'
       androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
   }

1
นี่คือคำตอบที่ถูกต้องที่สุด
Fran Marzoa

1
@FranMarzoa มันไม่ได้เป็น จะเกิดอะไรขึ้นเมื่อนำเข้าไลบรารีที่เข้ากันได้จากการพึ่งพาอื่น
m0skit0

1
@ m0skit0 ที่คุณต้องโพสต์คำถามอื่นที่นี่ฉันเดา ... ;)
Fran Marzoa


12

ดูภาพนี้และเพิ่มบรรทัดนี้ใน AndroidManifest.xml android ของคุณ

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

ป้อนคำอธิบายรูปภาพที่นี่


สิ่งที่หมายถึงสตริง?
Kishore Kumar

@KishoreKumar คุณสามารถเพิ่มชื่อสตริงใด ๆ เช่น appName ด้วย
Prashant Arvind

เพื่อความแม่นยำสิ่งใดก็ตามควรเป็นชื่อเต็มของคลาสซึ่งขยาย AppComponentFactory ตัวอย่างเช่นคลาสที่กำหนดเองที่กำหนดไว้ com.xxx.MyFactory ขยาย AppComponentFactory
jiashie

11

เพิ่มบรรทัดเหล่านี้ภายในไฟล์ AndroidManifest.xml

tools:replace="android:appComponentFactory"

android:appComponentFactory="whateverString"

1
เครื่องมือกลายเป็นสีแดงเมื่อทำการเพิ่ม จำเป็นต้องเพิ่มสิ่งอื่นอีกหรือไม่
natsumiyu

ไม่มีอะไรให้เพิ่มอีกแล้ว เหตุผลหนึ่งอาจเป็นเพราะคุณเป็นรุ่น gradle ไม่ตรงกัน คุณสามารถแสดงรหัสไฟล์ AndroidManifest.xml ของคุณได้หรือไม่?
Ajay

ฉันพยายามย้ายไป Androidx และฉันยังคงมีการดำเนินการล้มเหลวสำหรับงาน ': app: compileDebugJavaWithJavac' > การรวบรวมล้มเหลว ดูผลลัพธ์ข้อผิดพลาดคอมไพเลอร์สำหรับรายละเอียด
natsumiyu

นี่คือรายการหุ่นยนต์ของฉัน <application android: allowBackup = "true" android: ไอคอน = "@ mipmap / ic_launcher" android: label = "@ string / app_name" android: roundIcon = "@ mipmap / ic_launcher" android: usesCleartextTraffic = "true "android :supportRtl =" true "android: theme =" @ style / AppTheme "เครื่องมือ: แทนที่ =" android: appComponentFactory "android: appComponentFactory =" @ string / texthere ">
natsumiyu

1
ทางออกที่ดีบันทึกเวลาของฉัน
Umair Iqbal

9

เพียงเพิ่มโค้ดสองบรรทัดนี้ลงในไฟล์ Manifest ของคุณ

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

8

ทำตามขั้นตอนเหล่านี้:

  • ไปที่ Refactor และคลิกที่โยกย้ายไปยัง AndroidX
  • คลิก Do Refactor

สิ่งนี้จะไม่ทำ refactor ทั้งหมด :(
Mohsin

7

ย้ายไปที่androidXหากเป็นโครงการที่มีอยู่ หากเป็นโครงการใหม่ให้เพิ่มสองสถานะนี้Gradle.propeties

android.enableJetifier=true  
android.useAndroidX=true

สำหรับขั้นตอนรายละเอียดเพิ่มเติมhttps://developer.android.com/jetpack/androidx หรือตรวจสอบสิ่งนี้ AndroidX คืออะไร


6

ปัญหานี้ส่วนใหญ่เกิดขึ้นสำหรับการอ้างอิงเก่าการอ้างอิงเก่า

มี 2 ​​วิธีแก้ไข:

คนแรก:

อัปเดตทั้งหมดold dependenciesและClassPathsจากProject level gradleไฟล์

classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.2.0'

อันที่สอง:

โครงการของคุณ Migrate to AndroidX

จากเมนู Android Studio -> Refanctor -> Migrate to AndroidX

ขอบคุณแจ้งให้เราทราบหากใครช่วยจากคำตอบนี้


6

ในที่สุดก็พบทางออกที่ง่ายและรวดเร็วโดยการเพิ่มสองบรรทัดในandroid/build.gradleไฟล์

googlePlayServicesVersion = "16.+"

firebaseVersion = "17.6.0"

โปรดทำตามนี้ถูกต้อง 100%


1
จะเพิ่มที่นี่ได้ที่ไหน
Travis Delly

เพิ่มใน android / build.gradle ไฟล์
Manoj Alwis

2
@ManojAlw ส่วนไหนของไฟล์ build.gradle ที่เราต้องใส่นี่?
Keval Langalia

@KevalLangalia เพียงเพิ่มสองบรรทัดนี้ลงใน Android -> ไฟล์ build.gradle เช่น buildscript {ext {buildToolsVersion = "28.0.3" minSdkVersion = 19 compileSdkVersion = 28 targetSdkVersion = 28 supportLibVersion = "28.0.0" googlePlayServicesVersion = "16. +" firebaseVersion = "17.3.4"}
Manoj Alwis

1
มีประโยชน์จริงๆ ... ขอบคุณ
Vasudev Vyas

6

มันคือทั้งหมดที่เกี่ยวกับความเข้ากันได้รุ่นห้องสมุด

ฉันเผชิญข้อผิดพลาดที่แปลกประหลาดนี้สองชั่วโมง ฉันแก้ไขข้อผิดพลาดนี้โดยทำตามขั้นตอนเหล่านี้

แขวนการพึ่งพา build.gradle ของคุณเป็น

  implementation 'com.google.android.gms:play-services-maps:17.0.0'

ถึง

  implementation 'com.google.android.gms:play-services-maps:15.0.0'

1
สุจริตฉันทำแบบเดียวกันและใช้งานได้ดังนั้นฉันเดาว่ามันเกี่ยวกับความเข้ากันได้ของเวอร์ชันไลบรารี่หลังจากรวมการเข้าร่วม
Milos

6

เฉพาะถ้าคุณไม่ต้องการใช้ androidx

ดังนั้นในกรณีของฉันฉันใช้ไลบรารีที่ใช้ androidx แต่ฉันไม่ได้ใช้ androidx ดังนั้นเมื่อฉันปรับลดรุ่นไลบรารีนั้นปัญหาได้รับการแก้ไข

ในกรณีของฉัน:

implementation 'com.github.turing-tech:MaterialScrollBar:13.+'

ไลบรารีที่กล่าวถึงข้างต้นทำให้เกิดปัญหา 13. + จะรับไลบรารีเวอร์ชันใหม่โดยอัตโนมัติซึ่งใช้ androidx ดังนั้นฉันปรับลดรุ่นไลบรารีเป็น:

implementation 'com.github.turing-tech:MaterialScrollBar:13.2.5'

และปัญหาได้รับการแก้ไข


6
  1. โปรดไปที่ Refactor-> Migrate-> Migration to Android X

  2. กรุณาเพิ่มลงในgradle.propertiesไฟล์ของคุณ:

    android.enableJetifier=true
    android.useAndroidX=true

และทำการซิงค์


คุณช่วยอธิบายสถานการณ์ของคุณตอนนี้ได้อย่างไร
Girish BR

โครงการที่ฉันสืบทอดมานั้นมีอายุเพียงครึ่งทศวรรษ ฉันพยายามใช้การวิเคราะห์ Fabric / Firebase ใหม่ที่ Google กำลังผลักดัน และไลบรารีใหม่นั้นใช้ไลบรารีที่เข้ากันได้กับ androidx และโครงการของฉันใช้ AppCompat ตอนนี้ฉันต้องจัดการกับการอัพเดทและสิ่งต่าง ๆ มากมาย ฉันหยุดแล้วลองทำสิ่งต่าง ๆ รวมถึงคำสั่งเหล่านี้และฉันต้องการมันเพราะสิ่งใหม่ Firebase หลังจากที่ฉันเปิดใช้งานฉันได้รับข้อผิดพลาดของคอมไพเลอร์มากมาย แก้ไขว่า แต่ตอนนี้ฉันมีข้อผิดพลาดมาจากไฟล์ ui xml .. ดังนั้นฉันจะต้องละทิ้งทุกอย่างและลองกับรุ่นที่เก่ากว่า
Martin Berger

หลังจากอีกหนึ่งชั่วโมงของการแก้ไขเนมสเปซของคลาสไปยัง androidx ด้วยตนเองดูเหมือนว่าจะใช้งานได้ในขณะนี้ ปัญหาคือคอมไพเลอร์ไม่สามารถตรวจพบใน xml ตัวอย่างเช่น: "android.support.v7.widget.AppCompatSpinner" จะต้องเป็น "androidx.appcompat.widget.AppCompatSpinner" เอกสารนี้มีประโยชน์: developer.android.com/jetpack/androidx/migrate
Martin Berger

หวังว่ามันจะทำงานได้ในตอนนี้แจ้งให้เราทราบหากมีอะไรผิดปกติเราจะทำงานกับมัน!
Girish BR

4

สร้างโครงการใหม่และเปรียบเทียบไฟล์ build.gradle ของคุณและแทนที่ทั้งหมด

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'

และการพึ่งพาอื่น ๆ ที่มีลักษณะเดียวกันกับที่อยู่ในโครงการใหม่ซึ่งจะเป็นเช่นนั้น

implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'

implementation 'androidx.constraintlayout:constraintlayout:1.1.2'

implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'

androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'

androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

implementation 'androidx.core:core-ktx:1.0.0-alpha3'

จากนั้นแก้ไขการนำเข้าเพื่อใช้ androidx ในไฟล์ kotlin


เพราะด้วยเหตุผลบางอย่างฉันไม่ต้องการใช้ androidx
shaby

4

ทั้งหมดที่ฉันทำคือไปที่ตัวเลือก "Refactor" บนเมนูด้านบน

จากนั้นเลือก "ย้ายไปยัง AndroidX"

ยอมรับเพื่อบันทึกโปรเจ็กต์เป็นไฟล์ zip

โปรดอัปเดต Android Studio และ Gradle เพื่อให้แน่ใจว่าจะไม่มีปัญหา


4

1. เพิ่มรหัสเหล่านี้ในตอนท้ายของแอพ / build.gradle ของคุณ:

configurations.all {
   resolutionStrategy.force 'com.android.support:support-v4:28.0.0' 
   // the above lib may be old dependencies version       
    }

2. แก้ไข sdk และ tools version เป็น 28:

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

3. ในไฟล์ AndroidManifest.xml ของคุณคุณควรเพิ่มสองบรรทัด:

<application
    android:name=".YourApplication"
    android:appComponentFactory="AnyStrings"
    tools:replace="android:appComponentFactory"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">

หรือเพียงแค่

  • ไปที่ Refactor (Studio -> Menu -> Refactor)
  • คลิกการโยกย้ายไปยัง AndroidX มันใช้งานได้
  • มันใช้งานได้

2
  • ไปที่ Refactor ( รูปภาพ )
  • คลิกการโยกย้ายไปยัง AndroidX มันใช้งานได้
  • มันใช้งานได้

1
ยินดีต้อนรับลิงก์ไปยังโซลูชัน แต่โปรดมั่นใจว่าคำตอบของคุณมีประโยชน์หากไม่มี: เพิ่มบริบทรอบลิงก์เพื่อให้ผู้ใช้เพื่อนของคุณมีความคิดว่ามันคืออะไรและเพราะเหตุใดจึงอยู่ที่นั่น กำลังเชื่อมโยงไปยังในกรณีที่หน้าเป้าหมายไม่พร้อมใช้งาน คำตอบที่น้อยกว่าลิงก์อาจถูกลบ
Matthew

2

หากคุณไม่ต้องการย้ายไปยัง AndroidX ให้ทำตามขั้นตอนด้านล่าง

  1. ในแอปประเภทเทอร์มินัล gradlew: การพึ่งพา
  2. หลังจากแสดงการอ้างอิงในหน้าต่างกด Ctrl + f และพิมพ์ androidX
  3. คุณจะพบการอ้างอิงทั้งหมดที่ใช้ androidx lib อยู่ภายในคุณอาจต้องปรับลดรุ่นนั้นหรือใช้ทางเลือกอื่นเพื่อให้แน่ใจว่าจะไม่ใช้ androidX libs ภายในอีกต่อไป

1

ฉันมีปัญหาเดียวกันนี้เป็นเวลาสามวัน

มันเหมือนที่ android ต้องการให้เราใช้ Kotlin หรือ AndroidX พวกเขากำลังทำอะไรกับ Android

แต่นี่คือวิธีที่ฉันแก้ไขมัน

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

หมายเหตุ: คุณต้องใช้ Libraries ล่าสุด (ไฟล์ build.grudle) ใน android studio รุ่นเสถียร 3.4.1


1

ฉันไม่รู้ว่านี่เป็นคำตอบที่เหมาะสมหรือไม่ แต่มันก็ได้ผลสำหรับฉัน

เพิ่มคุณสมบัติ Gridle Wrapper

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

และสร้าง Gridle ไปที่

    classpath 'com.android.tools.build:gradle:3.4.2'

ข้อผิดพลาดในการแสดงเพราะรุ่น


ฉันคิดว่าสตริงควรจะเป็น androidx.core.app.AppComponentFactory สตริงโดยพลการจะทำให้เกิดข้อผิดพลาดแบบสุ่มบางครั้ง,
seyedrezafar

0

ก่อนอื่นต้องแน่ใจว่าได้เพิ่มบรรทัดนี้ในแท็กรายการ

xmlns:tools="https://schemas.android.com/tools"

จากนั้นเพิ่มเครื่องมือแทนที่หนึ่งที่คุณแนะนำในสตูดิโอ Android


0

เปลี่ยน proguardFile ใน build.gradle (Module: app) เป็นสิ่งต่อไปนี้

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

แทน

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

สิ่งนี้ใช้ได้สำหรับฉัน


0

สำหรับการแก้ปัญหานี้ฉันขอแนะนำให้กำหนดเวอร์ชันสำหรับตัวแปร ext ที่android/build.gradleโครงการ root ของคุณอย่างชัดเจน

ext {
    googlePlayServicesVersion = "16.1.0" // default: "+"
    firebaseVersion = "15.0.2" // default: "+"

    // Other settings
    compileSdkVersion = <Your compile SDK version> // default: 23
    buildToolsVersion = "<Your build tools version>" // default: "23.0.1"
    targetSdkVersion = <Your target SDK version> // default: 23
    supportLibVersion = "<Your support lib version>" // default: 23.1.1
}

การอ้างอิง https://github.com/zo0r/react-native-push-notification/issues/1109#issuecomment-506414941


0

ฉันกำลังเผชิญกับปัญหาเดียวกันสำหรับสตูดิโอ Android ของคุณคุณเพียงแค่เปลี่ยนปลั๊กอิน android Gradle รุ่น 3.3.2 และรุ่น Gradle คือ 5.1.1


0

ในกรณีของฉันฉันเพิ่มในรายการไฟล์ `

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

แท็กแอปพลิเคชันของหลักสูตรมันจะทำงาน

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