INSTALL_FAILED_NO_MATCHING_ABIS เมื่อติดตั้ง apk


478

ฉันพยายามติดตั้งแอพลงใน Android L Preview Intel Atom Virtual Device ล้มเหลวด้วยข้อผิดพลาด:

INSTALL_FAILED_NO_MATCHING_ABIS

มันหมายความว่าอะไร?


ตรวจสอบลิงค์นี้สำหรับปัญหา Android 3.0.1: stackoverflow.com/a/49473570/3400991
— Shobhakar Tiwari

คำตอบ:


633

INSTALL_FAILED_NO_MATCHING_ABISคือเมื่อคุณพยายามติดตั้งแอพที่มีไลบรารีดั้งเดิมและไม่มีไลบรารีดั้งเดิมสำหรับสถาปัตยกรรมซีพียูของคุณ ตัวอย่างเช่นหากคุณรวบรวมแอพสำหรับarmv7และพยายามติดตั้งลงบนอีมูเลเตอร์ที่ใช้สถาปัตยกรรมIntelแทนจะไม่ทำงาน


1
@DanielOchoa มันเป็นเพราะพวกเขาไม่เคยรักษาภาพสองภาพไว้สำหรับการปล่อยตัวอย่าง เมื่อ L เปิดตัวอย่างเป็นทางการฉันมั่นใจว่าจะมีอิมเมจ Intel x86 เช่นกัน
— Hiemanshu Sharma

1
วิธีที่จะเอาชนะปัญหานี้ ฉันใช้ Genymotion Emulater และติดตั้ง gapps และ Genymotion-ARM-Translation_v1.1 ยังคงได้รับปัญหานี้
— Prashant Maheshwari Andro

3
หากคุณมีปัญหานี้กับ Genymotion แม้ว่าจะใช้ตัวแปล ARM ก็เพราะคุณกำลังสร้างอุปกรณ์เสมือน x86 เช่น Google Nexus 10 เลือกอุปกรณ์เสมือน ARM แทนเช่นหนึ่งในแท็บเล็ตที่กำหนดเอง
— enl8enmentnow

1
ความคิดใด ๆ ที่ทำให้สิ่งนี้ไม่ทำงานบน Nexus 9 ที่ทำงาน 5.1.1 มันทำงานได้ดีบนแท็บเล็ต Sony Xperia Z2 ที่ใช้ 4.4.2 รวบรวม Sdk 21, min 17 abd เป้าหมาย 22.
— Bear

3
ฉันมีปัญหานี้ขณะใช้ตัวจำลอง Android Studio สำหรับ Nexus 5x บนเครื่อง Windows ของฉัน เพื่อเหตุผลด้านความเร็ว [เร็วกว่า 10 เท่า] ค่าเริ่มต้นคือการจำลองโทรศัพท์ราวกับว่ามันทำงานกับสถาปัตยกรรม Intel x86 [Snapdragon 808 ของ Nexus 5x นั้นมีพื้นฐานมาจาก ARM: tomshardware.com/reviews/lg-g4,4353-2.html ] . ฉันแก้ไขข้อผิดพลาดในการเข้าสู่ผู้จัดการ AVD เลือกอุปกรณ์จำลองที่ทำให้ฉันเกิดข้อผิดพลาดและคลิกที่ปุ่มแก้ไขที่ฉันตั้งค่าสถาปัตยกรรม ARM (armeabi-v7a) หลังจากการเปลี่ยนแปลงนี้พร้อมอีมูเลเตอร์รีบูตการติดตั้งก็ผ่านไปโดยไม่มีปัญหา
— Antonino

150

INSTALL_FAILED_NO_MATCHING_ABIS คือเมื่อคุณพยายามติดตั้งแอพที่มีไลบรารี่เนทีฟและไม่มีไลบรารี่เนทีฟสำหรับสถาปัตยกรรมซีพียูของคุณ ตัวอย่างเช่นหากคุณรวบรวมแอพสำหรับ armv7 และพยายามติดตั้งลงบนอีมูเลเตอร์ที่ใช้สถาปัตยกรรม Intel แทนจะไม่ทำงาน

การใช้ Xamarin ใน Visual Studio 2015 แก้ไขปัญหานี้โดย:

  1. เปิด xamarin .sln ของคุณ
  2. คลิกขวาที่โครงการ Android ของคุณ
  3. คลิกคุณสมบัติ
  4. คลิกตัวเลือก Android
  5. คลิกแท็บ 'ขั้นสูง'
  6. ใต้ "สถาปัตยกรรมที่รองรับ" ให้ตรวจสอบสิ่งต่อไปนี้:

    1. armeabi-v7a
    2. x86
  7. บันทึก

  8. F5 (สร้าง)

แก้ไข:โซลูชันนี้ได้รับการรายงานว่าทำงานบนVisual Studio 2017เช่นกัน

แก้ไข 2:โซลูชันนี้ได้รับการรายงานว่าทำงานบนVisual Studio 2017 สำหรับ Macเช่นกัน


6
โซลูชันนั้นทำงานกับ Visual Studio 2017 ด้วยสำหรับโครงการ Xamarin.Android
— corentinaltepe

1
สิ่งนี้ใช้ได้สำหรับฉันเมื่อใช้โครงการ Android WebView App
— JRodd

4
ดูเหมือนว่าใน Xamarin ทุกวันมีสิ่งกีดขวางใหม่ที่ไม่คาดคิดทำให้ฉันไม่สามารถเรียกใช้แอปพลิเคชันของฉันได้ (ซึ่งทำงานเมื่อวานนี้) เนื่องจากไฟล์ csproj ของฉันอยู่ในดรอปบ็อกซ์ฉันสามารถตรวจสอบประวัติรุ่นและคุณสมบัตินี้ไม่ได้อยู่ในไฟล์เมื่อวานนี้จึงขาดหายไปทั้งหมด วันนี้ฉันต้องเพิ่มตัวเลือก x86 เพื่อให้แอปทำงานได้ ทำไมบนโลกคือ xamarin หรือ android ใช้ค่าเริ่มต้นต่างกันทันที? มันช่างน่าหงุดหงิดเหลือเกิน! อย่างไรก็ตามขอบคุณคนอย่างคุณฉันสามารถเอาชนะและทำงานต่อไปได้ ขอบคุณมากและ +1 สำหรับคุณ!
— TMan

2
หวังว่าฉันจะสามารถโหวตมากกว่าหนึ่งครั้ง ... ผ่านการทดสอบและทำงานกับ VS 2017 สำหรับ Mac
— JordiVilaplana

สำหรับ Visual Studio Community 2019 สำหรับ Mac: 1. คลิกขวาที่โปรเจค android ของคุณ 2. คลิกตัวเลือก 3. คลิก Android Build 4. ขั้นสูง
— โมฆะ

87

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

โพสต์สิ่งนี้เพราะฉันไม่สามารถหาคำตอบได้โดยตรงและต้องดูโพสต์ที่แตกต่างกันสองสามอย่างเพื่อให้ได้สิ่งที่ฉันต้องการ ...

ฉันสามารถใช้อีมูเลเตอร์ x86 Accelerated (HAXM) เพียงแค่เพิ่มสิ่งนี้ลงในสคริปต์ build.gradle ของโมดูลของฉัน Inside android {} block:

splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a'
            universalApk true
        }
    }

เรียกใช้ (สร้าง) ... ตอนนี้จะมี (yourapp) -x86-debug.apk ในโฟลเดอร์เอาท์พุทของคุณ ฉันแน่ใจว่ามีวิธีการติดตั้งแบบอัตโนมัติเมื่อเรียกใช้ แต่ฉันเพิ่งเริ่มต้นตัวจำลอง HAXM ที่ต้องการและใช้บรรทัดคำสั่ง:

adb install (yourapp)-x86-debug.apk

2
ล้มเหลว [INSTALL_FAILED_NO_MATCHING_ABIS]
— abbasalim

ไม่ได้ผลสำหรับฉันและไม่พบ(yourapp)-x86-debug.apkไฟล์ในผลลัพธ์โครงการของฉัน
— Eido95

ฉันไม่ต้องการแบ่ง APK เป็นตัวเลือกใช่ไหม @DrissBounouar
— ericn

คุณสามารถใช้ apk สากลได้สมมุติว่ามันมีทั้งสถาปัตยกรรม
— Driss Bounouar

ยังคงเผชิญกับปัญหาเดียวกัน
— Vikash Parajuli

61

หากคุณใช้ Genymotion คุณต้องติดตั้ง ARM Translation และ GApps


ใน API บางตัวที่คุณใช้คุณต้องเพิ่มทั้ง "ARM Translation Installer v1.1" และ "GApps สำหรับรุ่น Android ของคุณ"
— saneryee

4
อัปเดต 28 พฤษภาคม 2017: คู่มือนี้ไม่ได้รับการสนับสนุนอีกต่อไปและอาจไม่ทำงาน โปรดอย่าใช้หรือขอการสนับสนุนอีกต่อไป จาก xda-developers
— AndroidCoolestRulest

1
คุณสามารถไปที่ลิงค์นี้เพื่อติดตั้ง ARM Translation
— Devansh Maurya

37

นี่เป็นข้อผิดพลาดแปลก ๆ ที่อาจเกิดจากการทำงานหลายแอพของคุณ หากต้องการหลีกเลี่ยงให้ใช้บล็อกต่อไปนี้ในไฟล์build.gradleของแอปของคุณ:

android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]

1
สวัสดี นี่ทำให้การสร้างโครงการของฉันสำเร็จ แต่ก็ยังทำให้ฉันมีข้อผิดพลาดเดียวกัน ฉันกำลังทำงานกับ mac, genymotion โดยทั่วไปแล้วการตั้งค่านี้ที่คุณบอกไว้นั้นใช้เฉพาะกับรุ่นที่ใช้ในการดีบักหรือสำหรับรุ่นบิลด์เท่านั้น
— myDoggyWritesCode

@ user3241111 สามารถใช้กับทั้ง debug และ prod คุณได้ลองทำความสะอาดโครงการของคุณแล้วหรือยัง หรืออาจเป็นโมฆะ / รีสตาร์ท Android Studio?
— IgorGanapolsky

1
@ user3241111 หากคุณกำลังใช้ gradlew สำหรับการสร้างเทอร์มินัลบรรทัดคำสั่งคุณก็ยังสามารถล้างโครงการของคุณด้วย gradle ได้
— IgorGanapolsky

1
ฉันลองวิธีนี้แล้วใช้งานได้ ... ในโครงการของฉันไม่มี APP_ABI แต่ฉันเพิ่มมันลงไปและสร้างเพียง apk เดียวและใช้งานได้ stackoverflow.com/a/35565901/3241111
— myDoggyWritesCode

1
นอกจากนี้ฉันเพิ่งเพิ่ม gradle daemon ที่เปิดใช้งานและมันได้ดำเนินการมากขึ้น ... เอาล่ะขอบคุณสำหรับการสนับสนุนของคุณ :)
— myDoggyWritesCode

11

ฉันรู้ว่ามีคำตอบมากมายที่นี่ แต่รุ่น TL; DR คือสิ่งนี้ (หากคุณใช้ Xamarin Studio):

  1. คลิกขวาที่โครงการ Android ในแผนผังโซลูชัน
  2. เลือก Options
  3. ไปที่ Android Build
  4. ไปที่Advancedแท็บ
  5. ตรวจสอบสถาปัตยกรรมที่คุณใช้ในโปรแกรมจำลอง (อาจเป็นx86/ armeabi-v7a/ armeabi)
  6. สร้างแอป Kickass :)

11

วิธีนี้ใช้ได้ผลสำหรับฉัน ลองทำเช่นนี้เพิ่มบรรทัดต่อไปนี้ในไฟล์build.gradleของแอป

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}

11

บน Android 8:

apache.commons.io:2.4

มันให้ INSTALL_FAILED_NO_MATCHING_ABIS ลองเปลี่ยนเป็น 2.5 หรือ 2.6 และมันจะทำงานหรือแสดงความคิดเห็นออกมา


6
ขอบคุณมากคุณช่วยชีวิตฉันไว้ ฉันไม่รู้ว่าทำไมฉันถึงได้รับ: การใช้งาน 'org.apache.directory.studio:org.apache.commons.io:2.4'
— Pierrick HYMBERT

7

ความคิดเห็นของ @ enl8enmentnow ควรเป็นคำตอบเพื่อแก้ไขปัญหาโดยใช้ genymotion:

หากคุณมีปัญหานี้กับ Genymotion แม้ว่าจะใช้ตัวแปล ARM ก็เพราะคุณกำลังสร้างอุปกรณ์เสมือน x86 เช่น Google Nexus 10 เลือกอุปกรณ์เสมือน ARM แทนเช่นหนึ่งในแท็บเล็ตที่กำหนดเอง


1
ฉันทำงานกับ mac และอาจเป็นรุ่นที่สร้างสำหรับอุปกรณ์เสมือน x86 ฉันลองใช้แท็บเล็ตที่กำหนดเองทางจีโนมมันยังใช้งานไม่ได้และทำให้เกิดข้อผิดพลาดเดียวกันขณะติดตั้ง
— myDoggyWritesCode

7

สิ่งนี้ใช้ได้สำหรับฉัน ... Android> Gradle Scripts> build.gradle (โมดูล: แอป) เพิ่มภายใน android *

android {
  //   compileSdkVersion 27
     defaultConfig {
        //
     }
     buildTypes {
        //
     }
    // buildToolsVersion '27.0.3'

    splits {
           abi {
                 enable true
                 reset()
                 include 'x86', 'armeabi-v7a'
                 universalApk true
               }
    }
 }

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



6

ฉันมีปัญหานี้โดยใช้ห้องสมุด bitcoinJ (org.bitcoinj: bitcoinj-core: 0.14.7) เพิ่มไปยัง build.gradle (ในแอปโมดูล) ตัวเลือกบรรจุภัณฑ์ภายในขอบเขต Android มันช่วยฉัน

android {
...
    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
        exclude 'lib/x86_64/freebsd/libscrypt.so'
        exclude 'lib/x86_64/linux/libscrypt.so'
    }
}

ขอบคุณ มันช่วยฉันด้วย Bitcoin J Integration
— Umer Kiani

ขอบคุณมากฉันลองใช้วิธีแก้ปัญหาหลายอย่าง แต่วิธีนี้ใช้ได้ผลสำหรับฉันปัญหาของฉันคือ scrypt-1.4.0.jar ไม่ได้ติดตั้งใน Android รุ่นพาย (Nokia 7.1) อุปกรณ์
— Sagar Pithiya

3

ในกรณีของฉันในโครงการ xamarin ในข้อผิดพลาด visual studio ถูกลบออกโดยการเลือกคุณสมบัติ -> ตัวเลือก Android และตรวจสอบใช้ Share run Times และใช้การปรับใช้อย่างรวดเร็วในบางกรณีหนึ่งในนั้น ป้อนคำอธิบายรูปภาพที่นี่


2

สำหรับ genymotion บน mac ฉันได้รับข้อผิดพลาด INSTALL_FAILED_NO_MATCHING_ABIS ขณะติดตั้ง apk ของฉัน

ในโครงการของฉันไม่มี "APP_ABI" แต่ฉันเพิ่มเข้าไปตามนั้นและสร้างเพียง apk เดียวสำหรับสถาปัตยกรรมทั้งสอง แต่มันก็ใช้งานได้ https://stackoverflow.com/a/35565901/3241111


2

ใน visual studio community edition 2017 บางครั้งการเลือก ABIs ที่รองรับจากตัวเลือก Android จะไม่ทำงาน

ในกรณีดังกล่าวโปรดตรวจสอบว่า. csproj มีบรรทัดต่อไปนี้และไม่มีบรรทัดที่ซ้ำกันในการกำหนดค่าบิลด์เดียวกัน

 <AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>

เพื่อแก้ไข

  1. ยกเลิกการโหลดโครงการ Android ของคุณ
  2. คลิกขวาและเลือกแก้ไขโครงการ ...
  3. ตรวจสอบให้แน่ใจว่าคุณมีบรรทัดข้างต้นเพียงครั้งเดียวในการกำหนดค่าการสร้าง
  4. บันทึก
  5. คลิกขวาที่โปรเจค Android และโหลดใหม่

1

โดยทั่วไปหากคุณลองทุกอย่างด้านบนและยังคงมีข้อผิดพลาดเดียวกัน "เพราะฉันกำลังประสบปัญหานี้มาก่อนด้วย" ให้ตรวจสอบว่า. jar หรือ. aar หรือโมดูลที่คุณเพิ่มอาจเป็นไลบรารีหนึ่งที่ใช้ ndk และหนึ่งนั้นไม่สนับสนุน 8.0 (Oreo) + ฉันกำลังใช้ซ็อกเก็ต Microsoft SignalR Library เพิ่มไฟล์. jar และในภายหลังฉันพบแอปที่ไม่ได้ติดตั้งใน Oreo หลังจากนั้นฉันก็เอาห้องสมุดนั้นออกเพราะในปัจจุบันไม่มีวิธีแก้ปัญหาในหน้าคอมไพล์แล้ว .

ดังนั้นโปรดตรวจสอบไลบรารี่ที่คุณใช้และค้นหาถ้าคุณต้องการมัน


1

ฉันประสบปัญหานี้เมื่อย้ายจาก Android 7 (Nougat) เป็น Android 8 (Oreo)

ฉันได้ลองหลายวิธีข้างต้นและฉันโชคร้ายไม่มีอะไรทำงาน

ดังนั้นฉันจึงเปลี่ยนไฟล์. apk ไปเป็นไฟล์. zip แยกออกมาและพบว่าโฟลเดอร์libซึ่งไฟล์นี้อยู่ที่นั่น/x86_64/darwin/libscrypt.dylibดังนั้นเพื่อลบนี่ฉันเพิ่มรหัสในโมดูลbuild.gradleด้านล่างของ Android ส่วน (เช่น )

packagingOptions {
    exclude 'lib/x86_64/darwin/libscrypt.dylib'
    exclude 'lib/x86_64/freebsd/libscrypt.so'
    exclude 'lib/x86_64/linux/libscrypt.so'
}

แก้ไขปัญหาไชโยแล้ว


1

ในกรณีทั่วไปเพื่อค้นหาว่าการพึ่งพาไลบรารีใดที่มี ABI ที่เข้ากันไม่ได้

  • สร้างไฟล์ APK ใน Android Studio (เมนู Build> Build Bundle (s) / APK (s)> Build APK (s)) // จริงบน 01.04.2020
  • เปลี่ยนชื่อไฟล์ APK แทนที่ส่วนขยาย "apk" ด้วยส่วนขยาย "zip"
  • คลายไฟล์ zip ไปยังโฟลเดอร์ใหม่
  • ไปที่โฟลเดอร์ libs
  • ค้นหาว่าไลบรารี * .jar ใดที่มี ABIs ที่เข้ากันไม่ได้

คุณอาจลองอัพเกรดรุ่น / ลบ / แทนที่ไลบรารีเหล่านี้เพื่อแก้ปัญหา INSTALL_FAILED_NO_MATCHING_ABIS เมื่อติดตั้งปัญหา apk


0

เรื่องนี้เกิดขึ้นกับฉัน ฉันตรวจสอบตัวจัดการ SDK และบอกฉันว่าฉันใช้อยู่มีการอัปเดต ฉันอัปเดตแล้วและปัญหาก็หายไป


0

ค่อนข้างช้า แต่เพิ่งเจอกัน Xamarin.Androidนี้สำหรับ ตรวจสอบให้แน่ใจว่าคุณไม่ได้พยายามแก้ไขข้อบกพร่องในโหมดนำออกใช้ ฉันได้รับข้อผิดพลาดเดียวกันนี้แน่นอนถ้าอยู่ในโหมดวางจำหน่ายและพยายามแก้ไขข้อผิดพลาด เพียงเปลี่ยนจากการปล่อยเป็นการดีบั๊กอนุญาตให้ฉันติดตั้งอย่างถูกต้อง


0

ในกรณีของฉันฉันจำเป็นต้องดาวน์โหลดแอปพลิเคชันรุ่น x86

  1. ไปที่https://www.apkmirror.com/
  2. ค้นหาแอพ
  3. เลือกอันแรกในรายการ
  4. ดูที่ด้านบนของหน้าซึ่งมี [ชื่อ บริษัท ]> [ชื่อแอปพลิเคชัน]> [หมายเลขเวอร์ชัน]
  5. คลิกชื่อแอปพลิเคชัน
  6. คลิก 'ตัวแปรทั้งหมด'
  7. รายการควรมีตัวแปร x86 ให้ดาวน์โหลด

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